是否有静态分析工具来计算使用定义链?
我正在寻找一个用于 C 的静态分析工具,用于执行数据流分析并计算使用定义链(最好是命令行工具)。到目前为止,我已经尝试过 CIL、clang、lint、goanna 和其他一些静态分析工具,但它们都没有计算使用定义链。我也不喜欢在 IR 级别(例如 LLVM)工作,但如果 IR 不太复杂,那就没问题了。有没有什么工具可以满足我的要求?
谢谢!
I'm looking for a static analysis tool for C that performs dataflow analysis and computes use-define chains (preferably a command line tool). So far I have tried CIL, clang, lint, goanna and a few other static analysis tools, but none of them compute use-define chains. I also prefer not to work at the IR level (such as LLVM) but if the IR isn't too complex it could be fine. Is there any tool that satisfies my requirements?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Frama-C 平台具有计算 def/use 的插件,可以从命令行以批处理模式使用。
The Frama-C platform has plugins that compute def/use and can be used in batch mode from the command line.
我们的 DMS 软件重组工具包及其 C 前端 可以提供此功能。
DMS提供基本的解析和流分析机制; C 前端为 DMS 提供 C 语言的详细信息,包括数据流的起源/接收位置。 def-use 链作为表示分配的 AST 节点和表示接收器的 AST 节点之间的链接提供。可以在符号表中轻松找到相关变量。
请参阅各种类型的 DMS 可提取流的讨论。
Our DMS Software Reengineering Toolkit with its C Front End can provide this.
DMS provides basic parsing and flow analysis machinery; the C Front End provides DMS with the details of the C language including where the data flows originate/sink. The def-use chains are provided as links between AST nodes representing assignments and AST nodes representing sinks. The variables in question can be found in the symbol table easily.
See a discussion of various types of DMS-extractable flows.
如果您已阅读过 usedef.ml 的内核代码,Cil 就可以做到这一点,并且reachDef.ml 可能会有所帮助。
Cil can do it if you have read the kernel code as usedef.ml and reachingDef.ml may help.