我正在寻找一种用于 C 的静态分析工具,它可以执行数据流分析并计算使用定义链(最好是命令行工具)。到目前为止,我已经尝试过 CIL、clang、lint、goanna 和其他一些静态分析工具,但它们都没有计算使用定义链。我也不喜欢在 IR 级别(例如 LLVM)工作,但如果 IR 不是太复杂,那也可以。有什么工具可以满足我的要求吗?
谢谢!
我正在寻找一种用于 C 的静态分析工具,它可以执行数据流分析并计算使用定义链(最好是命令行工具)。到目前为止,我已经尝试过 CIL、clang、lint、goanna 和其他一些静态分析工具,但它们都没有计算使用定义链。我也不喜欢在 IR 级别(例如 LLVM)工作,但如果 IR 不是太复杂,那也可以。有什么工具可以满足我的要求吗?
谢谢!
Frama-C平台具有计算 def/use的插件,并且可以从命令行以批处理模式使用。
我们的DMS 软件再工程工具包及其C 前端可以提供此功能。
DMS 提供基本的解析和流分析机制;C 前端为 DMS 提供了 C 语言的详细信息,包括数据流的来源/汇点。def-use 链作为代表分配的 AST 节点和代表汇的 AST 节点之间的链接提供。有问题的变量可以很容易地在符号表中找到。
如果您已将内核代码作为 usedef.ml 阅读,Cil 可以做到这一点,并且reachingDef.ml 可能会有所帮助。