当前位置: 首页 > 知识库问答 >
问题:

SONAR 3.7.3-无法自动导入PMD XPath规则。必须通过SonarQube web界面手动创建规则

吴建中
2023-03-14

我正在努力让一些自定义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>

当我进入质量配置文件页面并制作一个新的配置文件时,给它一个xml文件,我会得到一大堆这样的错误:

无法自动导入PMD XPath规则“MyOrganization_SystemPrintln”。必须通过SonarQube web界面手动创建规则。

这似乎很清楚,但是当我试图通过复制已经存在的通用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>

共有1个答案

辛成周
2023-03-14

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

 类似资料:
  • 那么,换句话说,为什么编译器不能在第二个方法中执行自动装箱呢?是因为在第二个方法中,绑定不是显式的,而在第一个方法中绑定是明确的。

  • 问题内容: 我是Java新手,因此对以下示例感到困惑。可以认为“ ==”符号会比较 Intger 和 Int中“自动装箱” Integer 之间的值,并比较Integer之间的引用地址吗? 那么双打和0/0呢? 结果是: 问题答案: 出现时,取消装箱将会进行。 例如: 但是何时出现,取决于情况。 如果boxing type出现在,它将进行比较。但是,如果base type出现在,而另一侧是boxi

  • 那么双打和0/0呢? 结果是:

  • 规则 Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则: 通过 API 直接修改 (loadRules) 通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观,可以通过以下几个 API 修改不同的规则: FlowRuleManager.loadRules(List<FlowRule>

  • 我正在使用drools fusion,我想根据实现的规则数测试这个cep系统的性能。现在,我有了一个简单的规则文件。drl扩展。我想动态生成大约1000条规则。那么,如何在不让他们在中创建一对一的情况下自动完成此操作呢。drl文件?

  • 有没有一种方法可以通过使用集合名称变量来概括它