“扩展”静态分析工具的真正问题是“静态分析”是一个如此广泛的主题,以至于您通常需要大量机器来完成它:解析、树构建、控制流图提取、数据流提取、点-分析、过程间分析、范围分析,不胜枚举,请参阅关于分析程序的大量编译器文献。
您可能会使用表面语法的模式匹配将工具的注意力集中在某些程序代码上,但您仍然必须向工具解释您希望它在该点“静态分析”什么(以及一些分析 [例如 points- to] 要求您首先在任何地方进行分析,然后选择您想要的部分)。
道德:不要期望扩展工具来进行任意分析很容易。您基本上应该提前确定您关心的分析类型(受污染的输入?下标范围检查?API 滥用?)并找到一个已经支持这种事情的工具。至少那时您的“扩展”有可能因为与该工具已经完成的功能相似而变得简单。
我们的 DMS Software Reengineering Toolkit 试图在许多应用程序和语言中分摊构建各种分析机器的成本。它为 C、C++、Java 和 COBOL 提供了不同程度的解析、控制/数据流分析和指向分析。它具有表面语法模式匹配来帮助您“指出”。请参阅http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html