最近,我们试图编写一个PMD规则来发现Spring JDBC模板的查询*方法的所有出现。看一些示例AST xml代码,我编写了以下无害的XPATH表达式。
// PrimaryPrefix [名称[开始-与(@图片, 'jdbcTemplate.query')]]
但很快,我们意识到这还不够。如果有人写“this.jdbcTemplate.queryForObject”,则“this”成为“Primary Prefix”,“jdbcTemplate”成为“Suffix”。 JDBCTemplate对象实例的变量名也可以是任何名称。
我认为构造一个XPATH表达式来找出特定的Class方法调用的出现是相当容易的 - 在代码中的任何地方,但是看看AST树,我只是无法搞清楚。 XPATH真的可能,或者我们必须编写Java代码?