SONAR 3.7.3-PMD XPath规则<;我的习惯规则>;can';不能自动导入。必须通过SonarQube web界面手动创建规则

SONAR 3.7.3-PMD XPath规则<;我的习惯规则>;can';不能自动导入。必须通过SonarQube web界面手动创建规则,xpath,continuous-integration,sonarqube,pmd,Xpath,Continuous Integration,Sonarqube,Pmd,我正在努力将一些自定义pmd规则添加到我们的SONAR服务器上,这样它们就会出现在我们的夜间测试中。我有一个xml文件,其中包含一系列自定义规则,如下所示: <rule class="net.sourceforge.pmd.rules.XPathRule" dfa="false" externalInfoUrl="" message="System.out.print is used" name="MyOrganisation_SystemPrintln" typeResoluti

我正在努力将一些自定义pmd规则添加到我们的SONAR服务器上,这样它们就会出现在我们的夜间测试中。我有一个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>

系统。(打印输出),考虑使用记录器。
5.
当我转到Quality profiles(质量配置文件)页面并创建一个新配置文件时,给它一个xml文件,我会得到一系列错误,如下所示:

无法导入PMD XPath规则“MyOrganization\u SystemPrintln” 自动地必须通过SonarQube手动创建规则 网络界面

这似乎很清楚,但是,当我试图通过复制已经存在的通用xpath规则并对其进行更改来创建新规则时,没有地方可以放置“示例”部分。(只有名称、消息、xpathQuery和描述)我想知道我是否遗漏了一些可能是原因的信息,以及如何将这些规则放到sonar服务器上

非常感谢

编辑: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>

检测何时声明和/或为私有字段赋值,但未使用。
5.

事实上,如果没有自定义规则可以像PMD自定义规则那样声明示例,您必须将示例放入说明中,例如使用
blockquote
元素。

您好Mithfindel,谢谢您的回答。我是在假设xml文件中的示例是规则运行所必需的情况下工作的,你是说它们只是一个可读的示例,而不是代码的功能部分吗?也只是作为一个后续问题,如果它们没有真正的功能,您知道为什么示例不在xml文件的description标记中吗?我知道有两种声明规则的方法,我想知道这些规则是否与声明规则的java方法有关,而不是xpath方法。谢谢。很可能,PMD是这样做的,所以1。本说明未被示例和2所污染。IDE等工具以有意义的方式显示示例(与规则描述分开)。无论如何,这确实是一段人类可读的代码片段。哦,好吧,现在有意义了。太棒了,非常感谢你的帮助!:)Hi@Mithfindel,很抱歉再次提出这个问题,我刚刚查看了xml文件,发现有些规则的格式不是xpath,例如我的编辑中的上面的格式。当我尝试上载此规则时,出现错误无法导入没有“ref”属性的PMD规则。我喜欢这个问题。我只是想知道你是否知道为什么会这样?非常感谢。