Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sonarqube 5.2中的Java XPath规则_Java_Xpath_Sonarqube - Fatal编程技术网

Sonarqube 5.2中的Java XPath规则

Sonarqube 5.2中的Java XPath规则,java,xpath,sonarqube,Java,Xpath,Sonarqube,我已经安装了Java插件(3.7.1)和XML插件(1.3),我正在尝试添加Xpath规则来识别Java中的内容。我已经将源文件复制/粘贴到了我希望规则触发到SSLR工具箱中的地方,我的Xpath表达式触发得很好。我在Sonar中找到了XPath规则模板(必须安装XML插件才能获得它——Java插件中没有包含它),并将我的XPath放在那里。我已经将它与类型为*的文件进行了匹配,而且似乎该规则(即使在XML插件中)可能支持java,因为模板文本专门讨论了匹配AST节点。然而,我的规则是不开火。我

我已经安装了Java插件(3.7.1)和XML插件(1.3),我正在尝试添加Xpath规则来识别Java中的内容。我已经将源文件复制/粘贴到了我希望规则触发到SSLR工具箱中的地方,我的Xpath表达式触发得很好。我在Sonar中找到了XPath规则模板(必须安装XML插件才能获得它——Java插件中没有包含它),并将我的XPath放在那里。我已经将它与类型为*的文件进行了匹配,而且似乎该规则(即使在XML插件中)可能支持java,因为模板文本专门讨论了匹配AST节点。然而,我的规则是不开火。我已经制定了另一个规则来激发XML文件,这是有效的

我已经用声纳的方式激活了这两个规则,这适用于正在讨论的项目,并且这两个规则都设置为Blocker(现在-只是为了制造一些噪音)。但只有与实际XML文件相匹配的文件才起作用


我错过了哪一步?这方面的文档有点过时。

您必须安装XML插件才能获得XPath规则,因为Java插件不再支持用XPath编写规则。这就是文件过时的原因;这种编写规则的方式已经被删除

您拥有的XPath模板只能用于XML文件。这就是为什么你没有遇到任何问题


相反,您需要实现Java规则。

当它们从PMD移动到SSLR时,我知道它已被删除,但我认为它又回来了。对于如此简单的事情,这似乎是一个很大的仪式。XPath支持被删除的原因是它最终不可靠。通过AST的“路径”依赖于AST的形状,AST的形状可能会随着版本的变化而变化,从而导致XPath规则无声地失败。@Colselaw作为java插件的维护者,让我说清楚:这与PMD无关。SSLR用于支持Xpath规则。当移动到一个AST时,我们放弃了这个特性,该AST为每个节点提供了一个专用类型,从而为Ann指出的自定义规则提供了一个更可靠的API(编译时失败)。