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

时间:2010-05-20 03:55:07

标签: code-analysis pmd

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

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

但这只是用于复制/粘贴检测吗?编写CPD解析器是否能让我在rile set方面完全支持PMD?

1 个答案:

答案 0 :(得分:1)

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

问题是:

  • 您能否快速定义语言的语法(可能,取决于您的表现如何,语言有多乱以及PMD提供的解析机制的强度)
  • 您可以定义我的语言的语义,以便PMD提供的“语义检查”工作。你必须这样做,因为语法告诉你(和一个工具)几乎没有语法的语义。我猜想PMD工具的“语义检查”与Java的精确细节非常吻合;如果你的语言完全匹配java,这将是零工作。但它没有,或者你不会问这个问题。语言差异,即使是次要的,也会导致对代码解释的不连续变化。在进行“严肃”语义之前,您可能必须构建一个符号表,将代码中的标识符映射到这些符号的声明(以及“语义”类型)。根据我使用的工具基础设施,这一步仅需1-2个月就可以使用真正的语言。
  • 最后,您可能需要对特定于您的语言的特殊PMD检查进行编码。这也需要时间和精力。

我构建了通用的编译器类型的机器(解析器,流量分析器,样式/错误检查器),并且一直向我们的机器发出WRT等效问题。我们尝试使用大量机器,尝试使新的语言更容易集成,并且我们一直在努力使这种“方便快捷”达到15年以上。它仍然不方便,几周后我们的工具无法做到这一点。我怀疑PMD更好。