代码之家  ›  专栏  ›  技术社区  ›  Maltrap

正在查找免费源代码分析器(函数依赖树)[关闭]

  •  2
  • Maltrap  · 技术社区  · 15 年前

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

    我要找的是沿着这条线的东西:

    printstring->打印字符->打印字节->打印f

    5 回复  |  直到 15 年前
        1
  •  7
  •   Mark Rushakoff    15 年前

    几乎可以肯定是过度的,但是你可以为C,C++,PHP,Java,C语言等等做更多的事情。 Doxygen (如果你有 Graphviz dot 安装)。 Here's a page with a sample call tree 由doxygen/dot生成。

    Doxygen在Windows上运行很好,可以 output HTML and a few other formats .

        2
  •  1
  •   Ira Baxter    15 年前

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

    如果您想要一个准确的调用图,您需要一个工具来构造一个使用完整的语言知识的调用图。frama-c(见其他答案)afaik就是其中之一,尽管我不知道它如何处理宏和间接调用。

    不是免费的,但是 DMS Software Reengineering Toolkit and its C front end 具有完整的C宏/预处理器处理能力,并为文件系统构造调用图。它在调用图构造中特别包含了一个要分析的点,以便为间接函数调用的位置提供保守的近似值。见 example call graph 黑弧(直接调用)和蓝弧(保守分析)间接调用。

        3
  •  0
  •   Pascal Cuoq    15 年前

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

        4
  •  0
  •   Simon Peverett    15 年前

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

        5
  •  0
  •   Michael Kohne    15 年前

    源导航器似乎又在开发中了(最新版本的sourcenav ng是在今年2月发布的)。源导航器可以为您提供调用树、类依赖项等。我没有尝试过最新版本。适用于Windows或x11。

    http://sourcenav.berlios.de/