【问题标题】:Java XPath rules in Sonarqube 5.2Sonarqube 5.2 中的 Java XPath 规则
【发布时间】:2015-11-18 03:18:39
【问题描述】:

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

我已经在 Sonar Way 中激活了这两个规则,该规则应用于相关项目,并且这些规则都设置为 Blocker(现在 - 只是为了制造一些噪音)。但只有与实际 XML 文件匹配的那个才有效。

我错过了什么步骤?文档有点过时了。

【问题讨论】:

    标签: java xpath sonarqube


    【解决方案1】:

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

    您拥有的 XPath 模板仅适用于 XML 文件。这就是您没有遇到任何问题的原因。

    相反,您需要 Java in Java 实施规则。

    【讨论】:

    • 当他们从 PMD 迁移到 SSLR 时,我知道它已被删除,但我认为它又回来了。对于如此简单的事情,这似乎是一大堆仪式。
    • XPath 支持被删除的原因是它最终是不可靠的。通过 AST 的“路径”依赖于 AST 的形状,这可能会因版本而异,从而导致您的 XPath 规则静默失败。
    • @Colselaw 作为 java 插件的维护者,让我准确地说:这与 PMD 无关。 SSLR 用于支持 Xpath 规则。正如 Ann 指出的那样,我们在迁移到具有专用类型的 AST 时放弃了此功能,从而为客户规则提供更可靠的 API(编译时失败)。
    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2020-12-16
    • 2014-04-22
    • 2016-05-06
    • 2016-12-22
    相关资源
    最近更新 更多