有没有办法弄清楚代码中定义的每个函数是否都在某处调用?
我一直在对我的大型项目进行重大代码更新,并且我想确保从代码中删除不再使用的旧函数。
有没有比在解决方案中搜索每个功能更好的方法?
答案 0 :(得分:7)
将您尝试删除的每个方法标记为Obsolete,并将IsError
设置为true
。
当您将方法标记为此类时,您将收到编译错误,并且能够找出是否可以安全地删除该方法。
[Obsolete("Don't use this method", /* IsError */ true)]
public void Foo () {}
答案 1 :(得分:2)
FxCop应该能够找到孤立/未使用的方法。我认为静态分析是你正在寻找的,而不是代码覆盖。
答案 2 :(得分:0)
像NCover这样的代码覆盖率工具?
编辑: 这假设您有足够的功能测试,并决心摆脱所有不必要的功能。删除然后编译可以工作,但不可扩展..无论如何,重点是您将需要某种源分析工具(静态或运行时分析)。
答案 3 :(得分:0)
这是一种除了反射之外的所有东西。
这看起来有点矫枉过正,但它的优势在于您可以通过删除多个功能来“批量”查询。
答案 4 :(得分:0)
两个建议:
根据您的开发工具,您可以为已声明但从未调用过的函数生成警告。
您可以生成链接器映射,然后将其函数列表与您直接从源生成的列表(使用grep
或ctags
?)进行比较。