SONAR 3.7.3-PMD XPath规则<;我的习惯规则>;can';不能自动导入。必须通过SonarQube web界面手动创建规则
我正在努力将一些自定义pmd规则添加到我们的SONAR服务器上,这样它们就会出现在我们的夜间测试中。我有一个xml文件,其中包含一系列自定义规则,如下所示: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
<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规则。我喜欢这个问题。我只是想知道你是否知道为什么会这样?非常感谢。