自动从ANSI C代码创建函数块图。

7

有没有人知道一款能够从ansi c代码创建“函数图表”的工具?

所谓“函数图表”,是指代表文件、函数及其关系概览的图表。我想象中它应该像电路图一样。

例如,如果我有以下代码:

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

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

图表应该类似于以下图片:

Function relation diagram

它有官方名称吗?也许是依赖关系图?

我已经看了一下Doxygen。但是它明确指出: Doxygen具有为C ++类生成继承图的内置支持。 同样的事情也发生在许多UML工具中。我没有任何类。虽然我的c文件可能接近。


也许我应该补充一下,我的目的是通过这个图表来呈现给定代码项目的概览。在代码中“找到正确的查找位置”方面提供帮助。因此,文件和库的分组非常重要。函数关系将提供实际内容。也许你知道更好的图表?基于文件/库的图表? - Illishar
这里的“依赖关系图”http://msdn.microsoft.com/en-us/library/ff657798.aspx,实际上看起来相当不错。它只是缺少函数之间的关系。 - Illishar
Doxygen 能够提取各种类型的图表,不仅限于继承关系图。 - Jens Gustedt
3个回答

5

我看到的大多数调用图都将所有函数放入一个大桶中,然后生成一棵树(如果幸运的话)。在进行分析时它们非常好用。但在这种情况下,我更关心文件之间的关系,而不是调用图的顺序。我认为UML会更合适。但也许你有一个特定的程序想法? - Illishar
现在大多数 IDE 已经支持调用图了。 - dicaprio
我已经查看了列表,但没有找到任何能够创建“文件排序调用图”的工具。它们只是以主调函数为顶部节点的树形结构。(而且我并不真正需要树形结构。) - Illishar

3

有一些软件不再免费,例如www.scitools.com,其中有一个工具叫做Understand C。我相信这个工具可以满足您的需求,还有其他一些工具,例如BOUML(这是免费的工具)。除此之外,qiao提供的列表也是很好的参考。


Scitool有一些有趣的图表。它们的依赖关系图非常接近:http://www.scitools.com/images/features/dependenciesGraph.png。但它并不显示函数关系,也肯定不能提供概览。任何看到这些图表的人都会惊恐地逃跑。(这可能是品味和复杂性的问题。) - Illishar
如果我正确理解了您的要求,Scitools 绝对可以满足您的需求。请探索这个工具,您会了解到更多信息。我相信他们仍然有试用版本。 - dicaprio
层次图更好:http://www.scitools.com/images/features/graph_views_c_calls.png。但它缺少所有文件关系,并且偏向于调用函数。 - Illishar
不,我不想生成代码等。这是为了文档。 - Illishar
Scitools还有一个工具可以从代码注释中发布文档,但我认为这个工具是不同的。 - dicaprio
显示剩余2条评论

0

我想我已经找到了我的想法的起源。将代码显示为“带有连接输入/输出的组件”是LabVIEW的概念。(我不是一个完全疯狂的人,因此寻找这种类型的图表;)

然而据我所知,LabVIEW不能满足我的需求。LabVIEW用于构建和连接功能。广泛应用于硬件/固件人员。(这也是我的目标受众。)它不会将代码反向工程成图表。

奇怪的是这些图表实际上并不存在。在我看来,像嵌入式程序员、ansi c、低级别、硬件等人会喜欢它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接