是否有任何静态分析工具可用作此概念的“教程”?

时间:2014-03-09 03:04:30

标签: testing automated-tests static-analysis

我知道静态分析,动态分析的基本概念,并且在使用数据流分析,污点分析和一些模型检查工作方面有一些经验。

目前,我正试图通过阅读静态分析工具的一些实现来更深入地了解静态分析。

有什么建议吗??

特别欢迎使用动态类型语言的工具:)

谢谢!

2 个答案:

答案 0 :(得分:2)

静态分析工具种类繁多,与以下方面的差异有关:

  • 工具的用途(查找死变量?查找下标错误?确定动态变量类型?)
  • 实现它的方法(启发式?保守算法?定理证明?)
  • 目标语言和分析的属性
  • 处理的表示(文本,AST,字节代码,混合)
  • 用户注释有助于指导分析(面对图灵分析时,有时提示是一个巨大的帮助)
  • 用户界面,IDE集成和报告
  • ...

通过阅读某些实现来了解这一点太多了。通过阅读源代码,您几乎从不学习任何重要内容。更糟糕的是,90%的源代码处理与上述问题无关的垃圾(“打开文件”,“解析lexeme”,“打印unicode字符串”)。

你最好拿一本关于程序分析和阅读的教科书来理解至少一些上述问题。

答案 1 :(得分:1)

我建议您去查看WALASoot。他们是非常学术性的实施,但他们实施了非常有趣的算法。

如果您想从轻量级(过程内,无全局数据流等)分析开始,您可以查看Findbugs。

关于动态类型语言,WALA对JavaScript有一些支持,但AFAIK相当有限(虽然没有深入研究它)。但是有一些JavaScript的学术工具,比如TAJS。谷歌闭包编译器在这方面也很有意思。

相关问题