code-analysis - PMD 可以定制以完全支持新语言吗?

标签 code-analysis pmd

可以在合理的时间内定制 PMD 以完全支持新语言吗?我的意思是我知道从技术上讲几乎任何事情都可以完成,但我想知道这是否可以在合理的时间内完成?例如。 <2周

本页提到了如何编写 CPD 解析器 http://pmd.sourceforge.net/cpd-parser-howto.html

但这只是为了复制/粘贴检测吗?编写 CPD 解析器是否可以在规则集方面完全支持 PMD?

最佳答案

我猜不会,但我不是 PMD 专家(我有自己的偏见,请检查我的简历)。

问题是:

  • 您能否快速为我的语言定义一个语法(也许,这取决于您的水平、语言的困惑程度以及 PMD 提供的解析机制的强度)
  • 您能否定义我的语言的语义,以便 PMD 提供的“语义检查”发挥作用。您必须这样做,因为语法实际上并没有告诉您(和工具)任何有关语法语义的信息。我猜测 PMD 工具“语义检查”与 Java 的精确细节非常相关;如果你的语言与java完美匹配,这将是零工作。但事实并非如此,否则你也不会问这个问题。语言语义的差异,即使是微小的差异,也会导致代码解释的不连续变化。在开始执行“严肃的”语义之前,您可能必须构建一个符号表,将代码中的标识符映射到这些符号的声明(以及“语义”类型)。根据我使用的工具基础设施,对于真正的语言来说,仅此一步就需要 1-2 个月的时间。
  • 最后,您可能必须编写特定于您的语言的特殊 PMD 检查代码。这也需要时间和精力。

我构建了通用的编译器类型的机器(解析器、流分析器、样式/错误检查器),并且在我们的机器上一直被问到与这个问题相同的问题。我们尝试拥有大量可用的机器,尝试让新语言的集成变得容易,15 年来我们一直致力于让这种“方便快捷”。它仍然不方便,并且在几周内用我们的工具无法做到这一点。我怀疑 PMD 更好。

关于code-analysis - PMD 可以定制以完全支持新语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870916/

相关文章:

visual-studio - 何时使用 `silent` 代码分析严重性?

java - 如何使用PMD忽略短变量规则中的 "id"

java - 当基类中存在 someObject 时,使用 PMD 检查 someObject.methodCall

import - 无法在 Eclipse 中导入 PMD 规则集

c++ - 一个 C++ 源代码分析器

c# - VS 2013/2015 代码分析——抑制来自第三方库的警告

python - PyDev 代码分析在 Aptana Studio 中不起作用

code-analysis - 如何检测代码更改频率?

java - 避免 POJO 类中的重复代码

java - maven-pmd-plugin 由于 "Absent Code attribute in method that is not native or abstract in class file"执行失败