寻找免费的源代码分析器(函数依赖树)

时间:2009-09-11 04:00:43

标签: c++ c code-analysis

有人知道在哪里可以找到运行在Windows上的实用程序/应用程序来分析C源并输出功能依赖树吗?

我正在寻找的东西是这样的:

  

PrintString-> PrintCharacter-> PrintByte-> printf的

5 个答案:

答案 0 :(得分:7)

这几乎肯定是矫枉过正,但您可以使用Doxygen(如果已安装Graphviz dot)为C,C ++,PHP,Java,C#等执行此操作。由Doxygen / dot生成的Here's a page with a sample call tree

Doxygen在Windows上运行正常,可以output HTML and a few other formats

答案 1 :(得分:1)

在深层语义意义上阅读源但不理解编程语言的工具只能给出调用图的近似值。 (如果在宏中发生调用怎么办?如果该调用发生在禁用的预处理器条件内怎么办?如果调用是间接调用怎么办?) 如果这足够好,而你真的不想知道间接调用的作用,那么像Doxygen和CScope这样的工具可能会有所帮助。

如果你想要一个准确的调用图,你需要一个工具使用langauge的完整知识构建一个。 Frama-C(参见其他答案)AFAIK是一个,虽然我不知道它如何处理宏和间接调用。

不是免费的,但DMS Software Reengineering Toolkit and its C front end具有完整的C宏/预处理器处理能力,并构建文件系统的调用图。它特别包括其调用图构造中的点到分析,为您提供间接函数调用的保守近似值。请参阅example call graph黑色弧线(直接呼叫)和蓝色弧线(保守分析)间接呼叫。

答案 2 :(得分:0)

许多工具都会生成这种调用图。 Doxygen可能具有最多的结果显示选项,是一个“文字编程”工具的核心。 http://frama-c.cea.fr/处的开源工具生成调用图(也采用点格式),并尝试自动按“服务”对函数进行分组:http://img23.yfrog.com/img23/8180/9il.png

答案 3 :(得分:0)

CodeInsight是一个商业编辑器,具有CTAGS / CSCOPE的功能。它还可以显示调用树图(以及几乎任何其他关系)。

答案 4 :(得分:0)

Source Navigator似乎再次开发(SourceNav NG的最新版本发布于今年2月)。 Source Navigator可以为您提供调用树,类依赖等等。我还没有尝试过最新版本。适用于Windows或X11。

http://sourcenav.berlios.de/