近年来是否对自定义PMD规则集文件格式进行了更改 - 如果是这样,我该如何迁移?

时间:2015-03-04 11:02:47

标签: pmd

我有一个PMD-IntelliJ插件的fails to be recognized规则文件。

该插件的作者建议我可能使用过时的自定义规则集(文件)格式版本。

这很可能,规则集文件已经很久了,到目前为止只用于Eclipse及其PMD插件。

我目前有点时间,所以我希望有人可以

  • 让我知道在过去几年中是否对自定义PMD规则集文件格式进行了格式更改。
  • 查看我们的规则文件(下面发布)的摘录,并告诉我他们认为我们使用的文件格式版本是什么;和
  • 请指出如何迁移到最新版本的说明。

到目前为止,我对PMD一无所知,只是想让它在IntelliJ中运行。中期,我打算学习它,但是现在,我基本上希望快速修复......:)

P.S。:这是来自PMD论坛的cross-post ......

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="exampleruleset">
<description>foo bar</description>
<rule name="DoubleCheckedLocking"
          message="Double checked locking is not thread safe."
          class="net.sourceforge.pmd.rules.DoubleCheckedLocking"
          externalInfoUrl="http://example.com/wiki/PMDRuleDoubleCheckedLocking">
  <priority>1</priority>
</rule>
</ruleset>

1 个答案:

答案 0 :(得分:1)

您似乎正在使用PMD 4.x中的规则。通过切换到PMD 5,有很多不兼容的changes重组包。

看起来,你只想执行一条规则,即DoubleCheckedLocking。我同意this suggestion仅引用该规则,例如:

<?xml version="1.0"?>
<ruleset name="Custom ruleset"
        xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
    <description>This ruleset checks my code for bad stuff</description>

    <rule ref="rulesets/java/basic.xml/DoubleCheckedLocking"/>
</ruleset>

此规则的默认优先级已经是&#34; 1&#34;,因此无需覆盖优先级。 另请参阅How to make a new rule setavailable rules