2

我经常觉得,在多次迭代我的代码之后,我只剩下函数或类或其他一般的代码行,这在以前的版本中是有意义的,但对新版本来说不是很有用。我知道分析器可以告诉您在运行测试用例时调用了代码的哪一部分?但是如何确定代码的哪一部分从未被调用来删除它,以便剩下的内容更具可读性?例如,有没有一种快速的方法可以知道代码中的哪些函数没有被从任何地方调用并且可以安全地删除。对于一个小的代码库来说,这听起来像是一个微不足道的问题,但是当你的代码库多年来不断增长时,这将成为一个重要且不那么微不足道的问题。

总结这个问题,对于不同的语言,删除死代码的最佳方法是什么?是否有任何与语言无关的解决方案或策略。还是每种语言都提供了一种用于识别死代码的工具。

我们通常使用 Java、Python 或 Objective-C 进行编程。

4

3 回答 3

3

您正在寻找的术语是“代码覆盖率”,并且有各种工具可以生成该信息。您必须确保在代码中使用每条可能的路径,以便能够使用这样的工具检测“死代码”,这只有通过一组非常广泛的测试才能实现。

大多数编译器都有一定程度的死代码检测,但只检测不可能被调用的代码,而不是由于程序逻辑等原因永远不会被调用的代码。

编辑:

专门针对 Python:如何在 Python 代码中找到未使用的函数?

对于 Java:如何在 Java 项目中查找未使用/死代码Java:死代码消除

对于 Objective-C:Xcode - 在项目中查找死方法清理 Objective-C 代码

于 2011-04-06T17:58:27.483 回答
2

对于函数,尝试对函数名称进行全局搜索,然后分析你得到的结果。函数内的死代码通常是可以找到的。

如果您怀疑某个函数未被使用,您可以删除它,或将其注释掉,看看您所拥有的是否仍然可以编译。

这仅适用于未使用的函数,因为它们不再被调用。由于通过代码的控制路径不再活动而从未使用过的功能更难找到,代码分析工具也无法很好地找到它。

于 2011-04-06T18:06:16.443 回答
0

您可以使用代码覆盖率报告找出未使用的函数或从未执行的函数的一部分。

根据逻辑,您可以将它们视为死代码/未使用代码。

可以使用的流行代码覆盖工具:

  • C/C++: gcov & lcov
  • Python:Coverage.py
  • Java:JCov
  • 目标-C:xccov
于 2019-10-28T05:10:25.217 回答