SONAR 3.7.3 - PMD XPath规则<my custom =“”rule =“”>无法自动导入。必须通过SonarQube Web界面</my>手动创建规则

时间:2014-07-02 10:00:32

标签: xpath continuous-integration sonarqube pmd

我正在努力尝试在我们的SONAR服务器上获得一些自定义的pmd规则,以便它们出现在我们的夜间测试中。我有一个xml文件,其中包含一系列自定义规则:

    <rule class="net.sourceforge.pmd.rules.XPathRule" dfa="false" externalInfoUrl="" message="System.out.print is used" name="MyOrganisation_SystemPrintln" typeResolution="true">
      <description>System.(out|err).print is used, consider using a logger.</description>
      <priority>5</priority>
      <properties>
         <property name="xpath">
            <value><![CDATA[

//Name[
    starts-with(@Image, 'System.out.print')
    or
    starts-with(@Image, 'System.err.print')
    ]

             ]]></value>
         </property>
      </properties>
      <example><![CDATA[

class Foo{
    Logger log = Logger.getLogger(Foo.class.getName());
    public void testA () {
        System.out.println("Entering test");
        // Better use this
        log.fine("Entering test");
    }
}

     ]]></example>

当我转到质量配置文件页面并创建一个新的配置文件时,给它一个xml文件我得到了一堆这样的错误:

  

PMD XPath规则&#39; MyOrganisation_SystemPrintln&#39;无法导入   自动。必须通过SonarQube手动创建规则   网络界面。

这看起来很清楚,但是当我尝试通过复制已经存在的通用xpath规则来创建新规则并更改它时,无处可放置&#34;示例&#34;部分。 (只有Name,message,xpathQuery和Description)我想知道我是否遗漏了可能导致此问题的原因,以及如何将这些规则放到声纳服务器上?

非常感谢。

编辑:PMD版本是1.3,java插件

也是如此

Edit2:规则的另一个例子:

<rule class="net.sourceforge.pmd.rules.UnusedPrivateFieldRule" dfa="false" externalInfoUrl="" message="Avoid unused private fields such as ''{0}''" name="MyOrganisation_UnusedPrivateField" typeResolution="true">
      <description>Detects when a private field is declared and/or assigned a value, but not used.</description>
      <priority>5</priority>
      <example><![CDATA[

public class Something {
  private static int FOO = 2; // Unused
  private int i = 5; // Unused
  private int j = 6;
  public int addOne() {
    return j++;
  }
}

    ]]></example>
   </rule>

1 个答案:

答案 0 :(得分:0)

实际上,SonarQube自定义规则中不可能像PMD自定义规则那样声明示例,您必须将示例放在说明中,例如使用blockquote元素。