【问题标题】:Custom PMD rules for finding out method usages用于查找方法用法的自定义 PMD 规则
【发布时间】:2012-08-07 04:33:24
【问题描述】:

最近,我们试图编写一个 PMD 规则来发现 Spring JDBC 模板的 query* 方法的所有出现。查看一些示例 AST xml 代码,我编写了以下无害的 XPATH 表达式。

//PrimaryPrefix[Name[starts-with(@Image,'jdbcTemplate.query')]]

但很快,我们意识到这还不够。如果有人写“this.jdbcTemplate.queryForObject”,那么“this”变成“Primary Prefix”,“jdbcTemplate”变成“Suffix”。 JDBCTemplate 对象实例的变量名也可以是任何东西。

我认为构造一个 XPATH 表达式来找出特定类方法调用的发生是相当容易的——在代码中的任何地方,但是查看 AST 树,我就是无法弄清楚。 XPATH 真的可能吗,还是我们必须编写 Java 代码?

【问题讨论】:

    标签: sonarqube pmd


    【解决方案1】:

    我建议使用声纳architectural rules engine 来发现这种违规行为。

    【讨论】:

    • Sonar 可能是一种选择,但令我感到困惑的是,我们无法在 PMD 规则集中将如此简单的东西表达为 XPath。毕竟,我只是在寻找一种方法来发现对象方法调用的发生。
    • @NarendraNaidu 您将问题标记为“声纳”,不是吗? PMD 规则扩展必须安装在 Sonar 服务器上(以便构建插件可以在运行时下载它们)。对这种类型的约束使用架构规则引擎要简单得多。毕竟,这就是该功能旨在支持的功能!此外,您将获得一个 GUI 来编辑规则。
    • 谢谢。我同意你的观点,通过图形用户界面编写规则要简单得多。但目前 Sonar 架构规则仅支持给出包名或类名。我找不到指定特定方法的选项。例如我只想标记所有 JdbcTempalte 查询* 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2017-03-10
    • 2013-04-08
    • 2013-02-14
    相关资源
    最近更新 更多