用于查找方法用法的自定义PMD规则

时间:2012-08-06 11:05:18

标签: sonarqube pmd

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

// PrimaryPrefix [名称[开始-与(@图片, 'jdbcTemplate.query')]]

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

我认为构造一个XPATH表达式来找出特定的Class方法调用的出现是相当容易的 - 在代码中的任何地方,但是看看AST树,我只是无法搞清楚。 XPATH真的可能,或者我们必须编写Java代码?

1 个答案:

答案 0 :(得分:0)

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