是否有静态分析工具来计算使用定义链?

时间:2011-06-04 10:54:54

标签: c static-analysis dataflow

我正在寻找一种用于C的静态分析工具,它可以执行数据流分析并计算use-define链(最好是命令行工具)。到目前为止,我已经尝试过CIL,clang,lint,goanna和其他一些静态分析工具,但它们都没有计算use-define链。我也不喜欢在IR级别工作(例如LLVM),但如果IR不太复杂,那就没问题了。有没有满足我要求的工具?

谢谢!

3 个答案:

答案 0 :(得分:3)

Frama-C平台具有计算def / use的插件,可以从命令行以批处理模式使用。

答案 1 :(得分:2)

我们的DMS Software Reengineering Toolkit及其C Front End可以提供此功能。

DMS提供基本的解析和流程分析机制; C前端为DMS提供C语言的详细信息,包括数据流源自/接收的位置。 def-use链被提供为表示赋值的AST节点和表示接收器的AST节点之间的链接。有问题的变量可以很容易地在符号表中找到。

参见various types of DMS-extractable flows.

的讨论

答案 2 :(得分:0)

如果您已阅读内核代码,则可以执行此操作,因为usedef.ml和reachDef.ml可能有所帮助。