代码是C,有一堆全局变量,结构类型和函数调用。
我想用信息绘制代码图:
- 通话图
- 在哪些函数中使用哪种结构类型
- 在哪个函数中使用哪个全局变量
希望这样可以更容易地识别连接的组件,并将它们提取到单独的模块中。
为了类似的目的,我尝试了以下软件:
- ncc
- ctags
- codeviz / gengraph
- doxygen
- 埃及
- cflow
EDIT2:
- frama-c
- snavigator
- 了解
这些的缺点要么是 a)要求我能够编译代码。我的代码无法编译,因为缺少部分源代码 b)预处理器宏的问题(如cflow,谁想要执行#if语句的两个分支)。通过cpp运行会弄乱行号 c)我出于某种原因无法让软件做我想做的事情(比如doxygen;调用图生成的文档不容易找到,因为它似乎无法绘制变量/数据类型,可能不值得花更多时间学习doxygen的配置选项)。编辑:我确实关注a these Doxygen instrcutions,但它只绘制了头文件依赖项。
我在Linux上,所以如果该软件适用于Linux和免费软件,那么它就是 huge plus。不确定我的老板是否理解购买可视化器的必要性: - (
例如:一个命令行工具列出了在哪些函数中引用符号(=函数,变量,类型)将会有很大的帮助(如addr2line,但对于类型/变量名称/函数和源代码)。
//Ť
答案 0 :(得分:6)
我的投票是gnu global。它具有ctags / cscope的所有功能,并且可以生成完全索引的html,允许您在自己喜欢的浏览器中浏览代码。在apache中启动它,你就拥有了一个任何人都可以访问的网络服务,包括完整的搜索功能。
它很好地集成到emacs / vim /甚至是bash-shell中,你可以直接从shell提示符中使用它。
要在Linux内核上查看它,请访问this
将其与用于圈复杂度plugin for eclipse的工具相结合,计算代码的复杂性。除了它可以处理的圈复杂度:
......你应该拥有所需的一切。
答案 1 :(得分:3)
如果你喜欢命令行;)也许你可以尝试cscope,它会对代码进行静态分析,并且可以告诉你在哪里引用了一些符号/变量/函数......不是圣格,但它可以非常有用,可以浏览未知的源代码。
还有一些GUI可以处理csope结果(Vi,Emacs,JEdit ......)。
另一方面,Eclipse with the CDT plugin也可以帮助您导航到您必须维护的意大利面条代码。
答案 2 :(得分:0)
这不是免费的,而且不是linux,但cppDepend可能值得评估 - 至少在有人提出更合适的建议之前:)
答案 3 :(得分:0)
如果您想知道声明或引用符号的功能,可以尝试LXR。它不是基于控制台的,但非常实用。