【问题标题】:How do I generate a data flow graph with clang or other tools?如何使用 clang 或其他工具生成数据流图?
【发布时间】:2013-12-25 18:08:34
【问题描述】:

使用 clang 和 graphviz,我可以为一些 C/C++ 代码 as explained in this answer 生成调用图。

现在我需要一个基于非常大的代码库(大部分是 C)计算的数据流图,这个代码库是一个软件,其中cmake 用作构建工具。

所以我的问题是,给定一个数据结构的名称,我怎么可能使用/实现这个结构来检索函数和文件的名称?

clang 项目的Libtool 中对一些数据流挖掘算法的引用很少(甚至不确定它是稳定的还是正在开发中的),但我在clang 本身或scan-build 上一无所获。

如何生成这条信息?我真的需要这个,给定一个我想检索代码中使用位置的名称,我审查过的几乎所有静态分析工具都专注于函数和方法,我需要检查 @987654327 中的数据结构用法@。

编辑:

我也在考虑使用 doxygen 作为文档,所以如果 doxygen 的 xml 输出对某些工具有用,我可以使用它。

【问题讨论】:

  • 这可能有点古怪,但是您是否考虑过将整个代码库加载到 Eclipse 中,然后使用 Eclipse 的搜索功能来做到这一点?
  • @slugonamission 很好,因为我找不到任何有用的东西......;说出我应该在 Eclipse 中使用哪些工具,我知道 CDT 是用于 C 和 C++ 的 Eclipse 套件,但我不知道用于这种分析的工具是什么。
  • 这并不是真正的数据流,但您的要求似乎只是检查数据结构的使用位置。通过使用 CDT + Eclipse,您至少可以以图形方式找到数据结构的使用位置(在某个地方的搜索菜单中),但不是完整的 DFG。

标签: c dataflow


【解决方案1】:

可以查询

  • 对符号的所有引用
  • 全局定义
  • 函数调用的函数
  • 函数调用函数
  • 文件包括文件
  • 等等。

cscope

【讨论】:

  • 没有任何视觉效果?由于这个项目非常大,来自终端的简单文本列表很快就会变得非常复杂,以一种有用的方式管理;该页面上也没有关于外部构建工具的消息,由于我的代码库的大小和构建过程,我需要这种合作。
  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 作为@JohnDoyle,这个问题已被标记为删除,因为它只是一个链接。我建议您重新发布更全面的答案。
  • @algl 我只知道 cscope 可以处理最困难的部分:解析文件并列出事物之间的连接。我不知道图形方面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多