【发布时间】:2009-03-19 17:20:58
【问题描述】:
有没有办法确定代码中定义的每个函数是否在某处被调用?
我一直在对我的一个大型项目进行重大代码更新,我想确保从代码中删除不再使用的旧功能。
有没有比在解决方案中搜索每个函数更好的方法?
【问题讨论】:
标签: c# visual-studio-2005
有没有办法确定代码中定义的每个函数是否在某处被调用?
我一直在对我的一个大型项目进行重大代码更新,我想确保从代码中删除不再使用的旧功能。
有没有比在解决方案中搜索每个函数更好的方法?
【问题讨论】:
标签: c# visual-studio-2005
将您尝试删除的每个方法标记为Obsolete,并将IsError 设置为true。
当您将方法标记为此类时,您将收到编译错误,并且能够确定您是否可以安全地删除该方法。
[Obsolete("Don't use this method", /* IsError */ true)]
public void Foo () {}
【讨论】:
FxCop 应该能够找到孤立/未使用的方法。我认为您要寻找的是静态分析,而不是代码覆盖率。
【讨论】:
这是一种可以捕捉除反射之外的所有内容的方法。
这似乎有点矫枉过正,但它的优点是您可以通过删除多个函数来“批量”查询。
【讨论】:
两个建议:
根据您的开发工具,您可能会为已声明但从未调用过的函数生成警告。
您可以生成链接器映射,然后将其函数列表与您直接从源生成的列表(使用grep 或ctags?)进行比较。
【讨论】:
像 NCover 这样的代码覆盖工具?
编辑: 这假设您对功能进行了足够的测试,并决心摆脱所有不必要的功能。 Delete-then-compile 可以工作,但不可扩展。无论如何,关键是您需要某种源分析工具(静态或运行时分析)。
【讨论】: