有没有办法检查是否调用了所有已定义的函数?

时间:2009-03-19 17:20:58

标签: c# visual-studio-2005

有没有办法弄清楚代码中定义的每个函数是否都在某处调用?

我一直在对我的大型项目进行重大代码更新,并且我想确保从代码中删除不再使用的旧函数。

有没有比在解决方案中搜索每个功能更好的方法?

5 个答案:

答案 0 :(得分:7)

将您尝试删除的每个方法标记为Obsolete,并将IsError设置为true。 当您将方法标记为此类时,您将收到编译错误,并且能够找出是否可以安全地删除该方法。

    [Obsolete("Don't use this method", /* IsError */ true)]
    public void Foo () {}

答案 1 :(得分:2)

FxCop应该能够找到孤立/未使用的方法。我认为静态分析是你正在寻找的,而不是代码覆盖。

答案 2 :(得分:0)

像NCover这样的代码覆盖率工具?

编辑: 这假设您有足够的功能测试,并决心摆脱所有不必要的功能。删除然后编译可以工作,但不可扩展..无论如何,重点是您将需要某种源分析工具(静态或运行时分析)。

答案 3 :(得分:0)

这是一种除了反射之外的所有东西。

  1. 删除方法
  2. 编译
  3. 这看起来有点矫枉过正,但它的优势在于您可以通过删除多个功能来“批量”查询。

答案 4 :(得分:0)

两个建议:

  • 根据您的开发工具,您可以为已声明但从未调用过的函数生成警告。

  • 您可以生成链接器映射,然后将其函数列表与您直接从源生成的列表(使用grepctags?)进行比较。