如何使用 clang 或其他工具生成数据流图?

Posted

技术标签:

【中文标题】如何使用 clang 或其他工具生成数据流图?【英文标题】:How do I generate a data flow graph with clang or other tools? 【发布时间】: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。 见***.com/a/41497191/120163 【参考方案1】:

可以查询

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

cscope。

【讨论】:

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

以上是关于如何使用 clang 或其他工具生成数据流图?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ffmpeg 或其他软件从视频中每个场景变化的中间生成缩略图

如何在 Windows 上使用 MINGW 构建 clang?

#盲盒+码# Clang Static Analyzer scan-build

Clang 编译器阶段

antlr 或其他工具可以为给定的语法生成有效代码吗?

是否可以在不干扰服务器的情况下使用 Charles 代理或任何其他工具故意生成错误 500