【发布时间】:2016-08-08 11:20:43
【问题描述】:
我一直在使用 pycparser 开发一个 python 程序,它应该生成一个 JSON 文件,其中包含给定函数及其输出的依赖项。 示例函数:
int Test(int testInput)
{
int b = testInput;
return b;
}
在这里,我希望 b 依赖于 testInput。但当然,结构和 if 语句等可能会变得更加复杂。我正在测试的文件还具有特定形式的函数,这些函数被视为输入和输出,如下所示:
int Test(int testInput)
{
int anotherInput = DatabaseRead(VariableInDatabase);
int b = testInput;
int c;
c = anotherInput + 1;
DatabaseWrite(c);
return b;
}
这里的c会依赖于VariableInDatabase,而b和之前一样。 我在 pycparser 中进行了这种分析,因为大多数结构和指针对我来说真的很难处理,而且似乎有更好的方法。我已经阅读了 AST 和 CFG,以及 Frama-C 等其他分析工具,但我似乎无法找到明确的答案。
有没有已知的方法来进行这种分析,如果有,我应该研究什么? 它应该包含数千个文件,并且能够将这些依赖项输出到 JSON 中,因此编辑器插件似乎不是我想要的。
【问题讨论】:
-
您的函数是无效的,但尝试返回一个值。对我来说毫无意义。
-
你的编译器应该因为你从
void函数返回结果而对你大喊大叫!抱歉,请阅读 C 编程的基础知识(“函数”部分)。 -
是的,有办法。遗憾的是,这需要解决 停机问题。
-
哦,shi-。这些功能应该只是虚拟的,与问题本身没有直接关系。但你是对的。 C不是我写的,我只是分析一下。
标签: python c static-analysis control-flow-graph pycparser