从应用程序中删除无效代码的最佳方法是什么? [处于保留状态]

问题描述 投票:1回答:3

我经常感到,在遍历我的代码多次后,我通常会得到一些函数或类或其他代码行,这些在上一修订版中是有意义的,但对新修订版不是很有用。我知道分析器可以告诉您在运行测试用例时调用了代码的哪一部分?但是,如何识别从未调用过的代码部分将其删除,以使剩下的内容更具可读性呢?例如,有一种快速的方法来知道您的代码中的哪些函数没有从任何地方调用,并且可以安全地删除。对于小的代码库,这听起来像是一个琐碎的问题,但是当您的代码库多年来增长时,这将成为一个重要的而不是琐碎的问题。

总而言之,对于不同的语言,删除无效代码的最佳方法是什么?是否有任何无关紧要的解决方案或策略。还是每种语言都提供了一种用于识别无效代码的工具。

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

language-agnostic code-cleanup
3个回答
3
投票

您要查找的术语是“代码覆盖率”,并且有various tools会生成该信息。您必须确保使用代码中的所有可能路径,以便能够使用这种工具检测“死代码”,这只有通过really广泛的测试集才能实现。

[大多数编译器具有某种程度的死代码检测功能,但是仅检测无法调用的代码,而不检测由于程序逻辑等原因永远不会被调用的代码。

编辑:

对于Python特别是How can you find unused functions in Python code?

对于Java:How to find unused/dead code in java projectsJava: Dead code elimination

对于Objective-C:Xcode -- finding dead methods in a projectCleaning up Objective-C code


2
投票

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

[如果您怀疑某个功能尚未使用,则可以将其删除或注释掉,然后查看是否仍然可以编译。

这仅适用于不再使用的函数,因为不再调用它们。由于很难遍历代码的控制路径,因此很难找到从未使用过的功能,并且代码分析工具也无法很好地找到它。


0
投票

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

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

可以使用的受欢迎的代码覆盖率工具:

  • C / C ++:gcov和lcov
  • Python:Coverage.py
  • Java:JCov
  • Objective-C:xccov
© www.soinside.com 2019 - 2024. All rights reserved.