代码之家  ›  专栏  ›  技术社区  ›  Rob Walker

死代码识别(C++)

  •  51
  • Rob Walker  · 技术社区  · 17 年前

    在VisualStudio 2008中编译了一个大型的遗留C++项目。我知道有相当数量的“死”代码没有在任何地方被访问——方法没有被调用,整个类没有被使用。

    静力分析 .

    这个问题: Dead code detection in legacy C/C++ project

    它还提到了一个-Wunreachable代码。gcc的选项。我希望Visual Studio也有类似的功能。我们已经使用了链接器的/OPT:REF选项来删除冗余代码,但这并没有在有用的级别报告死代码(当与/VERBOSE一起使用时,有超过100000行,包括库中的大量代码)。

    有没有更好的选项适合VisualStudio项目?

    7 回复  |  直到 9 年前
        1
  •  9
  •   Dan    17 年前

    我知道Gimpel的皮棉产品( PC-Lint Flexelint

    它们都属于静态分析工具的范畴。

    我与Gimpel没有任何关系,只是一个满意的长期客户。

        2
  •  7
  •   unwesen unwesen    17 年前

    http://www.programmingresearch.com/QACPP_MAIN.html ),另见 http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

    您正在寻找一个静态代码分析工具,可以检测无法访问的代码;许多编码准则(如MISRA-C++,如果我没有弄错的话)要求不存在无法访问的代码。一个专门用来执行这样一个指导方针的分析工具是你最好的选择。

    而且你也希望能够找到这个工具的其他用途。

        3
  •  3
  •   flolo    17 年前

    我不懂Visual C,还推荐了-Wunreachable代码特定的覆盖工具。为解决您的情况,我将尝试以下方法:

    1. 在编译器中启用死代码消除(我假设它默认为on)
    2. 启用整个程序/链接时间优化(因此他知道其他外部不需要模块中未使用的函数,因此会被丢弃)

    另一种方法可以是一些调用图生成工具(例如doxygen)。

        4
  •  1
  •   unresolved_external    8 年前

    我建议您使用以下几种方法:

    -Wunused-function
    -Wunused-label
    -Wunused-value
    -Wunused-variable
    -Wunused-parameter
    -Wunused-but-set-parameter
    

    2.Cppcheck具有一些有用的功能,如:

     --enable=unusedFunction
    

    3.按照之前的建议使用静态分析仪。

        5
  •  0
  •   Roddy    16 年前

    在调试器下运行Delphi程序时,IDE会在空白处显示哪些代码行可以设置为断点。很明显,链接器/编译器已经删除了真正死掉的代码,因为断点不能设置在那里。

    另外一些注释,因为评论者似乎误解了这一点:

    b:这不是“代码覆盖率”检查。您不需要运行应用程序来查看它是否达到要求。

    c:我对VS2008不够熟悉,所以说不出这个建议是否有效。

        6
  •  0
  •   Tiger4Hire    8 年前

    任何一个
    static analysis tool .
    2) MSVC marketplace CppCheck

    市场应用程序需要最新版本的Visual Studio,但免费“ Community Edition

        7
  •  -4
  •   Krzysztof Kowalczyk    17 年前

    推荐文章