Sonarqube 5.2中的Java XPath规则
我已经安装了Java插件(3.7.1)和XML插件(1.3),我正在尝试添加Xpath规则来识别Java中的内容。我已经将源文件复制/粘贴到了我希望规则触发到SSLR工具箱中的地方,我的Xpath表达式触发得很好。我在Sonar中找到了XPath规则模板(必须安装XML插件才能获得它——Java插件中没有包含它),并将我的XPath放在那里。我已经将它与类型为*的文件进行了匹配,而且似乎该规则(即使在XML插件中)可能支持java,因为模板文本专门讨论了匹配AST节点。然而,我的规则是不开火。我已经制定了另一个规则来激发XML文件,这是有效的 我已经用声纳的方式激活了这两个规则,这适用于正在讨论的项目,并且这两个规则都设置为Blocker(现在-只是为了制造一些噪音)。但只有与实际XML文件相匹配的文件才起作用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节点。然而,我的规则是不开火。我
我错过了哪一步?这方面的文档有点过时。您必须安装XML插件才能获得XPath规则,因为Java插件不再支持用XPath编写规则。这就是文件过时的原因;这种编写规则的方式已经被删除 您拥有的XPath模板只能用于XML文件。这就是为什么你没有遇到任何问题
相反,您需要实现Java规则。当它们从PMD移动到SSLR时,我知道它已被删除,但我认为它又回来了。对于如此简单的事情,这似乎是一个很大的仪式。XPath支持被删除的原因是它最终不可靠。通过AST的“路径”依赖于AST的形状,AST的形状可能会随着版本的变化而变化,从而导致XPath规则无声地失败。@Colselaw作为java插件的维护者,让我说清楚:这与PMD无关。SSLR用于支持Xpath规则。当移动到一个AST时,我们放弃了这个特性,该AST为每个节点提供了一个专用类型,从而为Ann指出的自定义规则提供了一个更可靠的API(编译时失败)。