源代码分析工具?

时间:2010-09-21 14:25:06

标签: c++ c code-analysis static-analysis

C和C ++的源代码分析和探索工具似乎非常缺乏。

我是否可以使用任何工具来收集有关C和/或C ++源文件的信息? cscope做了我需要的一部分,Doxygen看起来更接近。

至少包含所有函数,调用者,被调用者,变量引用等的列表。 也许Doxygen的xml输出可行。

理想情况下,gcc或llvm可以为此目的而挂钩,但我还没有找到一种方便的方法。

有什么建议吗?

7 个答案:

答案 0 :(得分:2)

有一个clang静态分析器,它是llvm的clang前端的一部分,但我不知道它对C / C ++的效果如何。他们的大部分努力似乎都是针对Objective-C。

http://clang-analyzer.llvm.org/

Doxygen适用于调用图表,您需要安装GraphViz并使用doxywizard选择“调用图”和“图表调用”图表复选框(专家模式“点”部分中的CALL_GRAPH和CALLER_GRAPH)。

答案 1 :(得分:1)

您可能会发现SourceMonitor对代码的更多统计分析以及免费代码有帮助:)

答案 2 :(得分:1)

我们的DMS Software Reengineering Toolkit及其C front endC++ Front End可以提供有关C和C ++程序的大量信息。

带有C前端的DMS可以解析大量的C源文件,构建完整的AST(甚至捕获注释)和符号表,并提供control and data flow analysis, with points-to analysis and call graphs。 C ++前端构建AST和完整符号表,但尚未提供所有流分析信息。

DMS提供调用解析器/流分析器的工具;您提供一些自定义代码来提取所需的信息。

它具有修改 AST并重新生成可编译源代码的附加功能。

我认为您会发现没有可以提取精确自定义数据的工具“易于使用”;你问的问题的性质和答案都有很多由复杂的语言语义引起的复杂性。

答案 3 :(得分:1)

试试Klocwork。它有你可能需要的关于C / C ++源代码的所有细节,还有更多。

答案 4 :(得分:1)

您可以根据CLang尝试CppDepend。这是一个很好的工具。

它提供了60个指标(当然包括你需要的功能:函数/类列表,调用者,被调用者,依赖图......)。

答案 5 :(得分:0)

Sonar是一个非常好的Java项目分析器。它现在支持some other languages,包括.Net。在这篇博文的最后,你可以看到很快就会发布一个C插件......

答案 6 :(得分:0)

Polyspace静态分析工具可以显示函数,调用者,被调用者,变量引用,全局变量读/写。您可以深入了解数据结构以确定访问的位置。信息以文本和图形格式显示。还确定可变范围信息。在线用户指南中的更多信息。链接到下面给出的其中一个部分:

http://www.mathworks.com/help/toolbox/polyspace/c_ug/brz384r-12.html#brz384r-17

免责声明:我为Polyspace静态分析工具的制造商MathWorks工作。