Java的哪些静态分析工具具有最简单的扩展机制。我检查了 PMD 但是编写自定义规则的过程似乎非常复杂。 具体来说,我想知道是否有任何工具提供 AspectJ 类似语法来挑选有趣的代码区域?我知道AspectJ的 declare warning 但它的功能似乎有限。

我找到了一个相关的问题:

Java的静态分析工具推荐? Java的静态分析工具推荐?

答案列出了许多工具。但我想找到哪一个提供编写自定义规则的最简单方法。

编辑:到目前为止,Guillaume建议的PMD的XPath表达式似乎与我正在寻找的最接近。我很快就会探索它。

有帮助吗?

解决方案

<!>扩展<!>的真正问题静态分析工具是<!>“静态分析<!>”;是一个如此广泛的主题,你需要很多机器来做它:解析,树构建,控制流图提取,数据流提取,点到分析,过程间分析,范围分析,列表不断,看到关于分析程序的大量编译器文献。

您可以使用表面语法的模式匹配来将工具的注意力集中在某些程序代码上,但您仍然可以使用 向工具解释你想要它什么<!>“静态分析<!>”;在那时候 (有些分析[例如指向]需要你到处进行分析 首先,然后选择你想要的部分。

道德:不要指望扩展工具来进行任意分析变得容易。 您基本上应该事先决定您关心的分析类型 (受污染的输入?下标范围检查?API滥用?)并找到一个工具 已经支持那种事了。至少那么你的<!> quot; extensions <!>有 由于与工具的功能类似,因此很容易变得简单。

我们的DMS软件再造工具包试图分摊在许多应用程序和语言中构建各种分析机器的成本。 它提供解析,控制/数据流分析和点分析 不同程度的C,C ++,Java和COBOL。它有表面语法 模式匹配,以帮助您<!>点; <!>“; 请参阅 http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top