【发布时间】:2012-11-14 05:52:14
【问题描述】:
不幸的是,我什至不确定如何调用这种静态分析。这不是真正的控制流分析,因为我不是在寻找函数调用,也不需要数据流分析,因为我不关心实际值。
我只需要一个工具来列出对特定变量进行写访问的位置(文件、函数)。我什至不在乎该列表是否包含无法访问的行。我可以想象编写一个简单的解析器就足以完成这项任务,但我确信肯定有一个工具可以进行这种简单的分析。
作为一个穷学生,我会很感激免费或更好的开源工具,如果有人能告诉我这种静态分析实际上是如何调用的,我将同样感激!
编辑:我忘了提到代码库中没有指针算法。
【问题讨论】:
-
在运行时,您可以调试并在变量地址处放置内存断点,但我知道这不是您要问的。
-
你不能只要求编译器生成一个 AST 吗?
-
我仍然需要步行和分析 AST。由于这只是一项小任务,我仍然有点不愿意在这样的事情上投入几个小时的编码和测试。我不能成为第一个想知道变量是否写入某个文件且仅写入该文件的人。
-
@Lichtblitz 如果您认为静态预测程序在运行时执行的操作只是一项需要花费您几个小时的小任务(您不妨花在其他事情上),您可以低估了问题的难度。对于相当大的 C 子集,一个相当精确的静态分析器不应少于 10 人年。您将花费几个多小时才能找到已经完全按照您的意愿进行操作的十年人年分析仪,并使其以您想要的格式输出结果。除非您正在考虑基于正则表达式的语法解决方案
-
@PascalCuoq 我只是在寻找该十年分析仪的单个功能子集的一小部分。如果你读过我的文字,你就会知道我不关心价值观,甚至不关心可达性。我只想获取写入特定变量值的所有事件。例如,我只想找出特定变量恰好位于赋值左侧的所有位置。
标签: c++ c code-analysis static-code-analysis