【问题标题】:Automatic create function block diagram from ansi c code [closed]从ansi c代码自动创建功能框图[关闭]
【发布时间】:2012-01-19 09:38:15
【问题描述】:

有没有人知道能够从 ansi c 代码创建“功能图”的工具?

“功能图”是指代表文件、功能及其关系的概览的图表。我想它类似于电路图。

例如。如果有以下代码:

//MyProgram.c
int main(int argc, char** argv)
{
    Foo();
    Bar();
    return 0;
}

//Slave.h
void Foo();
void Bar();

图表如下图所示:

它有正式名称吗?也许是依赖关系图?

我看过关于 Doxygen 的文章。但这一篇清楚地表明: Doxygen 内置支持为 C++ 类生成继承图。 许多 UML 工具也是如此。我没有任何课程。虽然我的 c 文件可能会接近。

【问题讨论】:

  • 也许我应该补充一点,我使用图表的目的是呈现给定代码项目的概述。有助于“在代码中找到正确的位置”。因此,文件和库的分组很重要。而功能关系会给出实际的内容。也许您知道更好的图表?基于文件/库的东西?
  • 这里的“依赖关系图”:msdn.microsoft.com/en-us/library/ff657798.aspx,实际上看起来相当不错。它只是缺少函数关系。
  • doxygen 能够提取各种图,而不仅仅是继承图。

标签: c diagram


【解决方案1】:

你指的是Call Graph

有一个生成它们的工具列表:http://en.wikipedia.org/wiki/Call_graph#Software

【讨论】:

  • 我见过的大多数调用图,将所有函数放入一个大桶中,然后生成一棵树(如果幸运的话)。他们在进行分析时非常好。在这种情况下,我对文件之间的关系比调用图的顺序更感兴趣。我认为 UML 会更好。但也许您有一个特定的计划?
  • 目前大多数 IDE 已经支持调用图。
  • 我查看了列表,但找不到任何能够创建“文件有序调用图”的内容。它们只是以 main-call 函数作为顶部节点的树。 (而且我根本不是在寻找树木。)
【解决方案2】:

有几个不再免费的软件,例如 www.scitools.com,它有一个名为 Understand C 的工具。这我肯定会做你正在寻找的,还有其他工具,如 BOUML(这是免费工具)。除此之外,qiao 提供的列表是很好的参考。

【讨论】:

  • scitool 有一些有趣的图表。他们的依赖关系图很接近:scitools.com/images/features/dependenciesGraph.png。它仍然没有显示功能关系,当然也没有给出概述。任何看到这些的人都会尖叫着逃跑。 (也许是品味和复杂性的问题。)
  • 是的,但它仍然可以满足您的需求。我假设您不想生成或重新生成代码。
  • 如果我正确理解了您的要求,scitools 绝对可以满足您的需求。请探索该工具,您将了解。我敢肯定他们还有试用版。
  • 层次图更好:scitools.com/images/features/graph_views_c_calls.png。但是它缺少所有文件关系,并且偏向于调用函数。
  • 不,我不想生成代码等。这是为了文档。
【解决方案3】:

我想我已经找到了我的想法的来源。将代码显示为“具有连接输入/输出的组件”是 LabVIEW 的概念。 (那么,我不是一个完整的疯子寻找这种图表;)

但据我所知,LabVIEW 并没有做我想做的事。 LabVIEW 用于构建和连接功能。被硬件/硬件人员广泛使用。 (这也是我的目标受众。)它不会将代码逆向工程成图表。

奇怪的是这些图表并不真正存在。在我看来,嵌入式程序员、ansi c、low level、hw 等人会喜欢它们。

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 2013-04-29
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多