最近、Spring JDBC テンプレートの query* メソッドのすべての出現を検出する PMD ルールを作成しようとしていました。サンプルの AST xml コードを見て、次の無害な XPATH 式を書きました。
//PrimaryPrefix[Name[starts-with(@Image,'jdbcTemplate.query')]]
しかしすぐに、これでは不十分であることに気付きました。誰かが「this.jdbcTemplate.queryForObject」と書くと、「this」が「プライマリ プレフィックス」になり、「jdbcTemplate」が「サフィックス」になります。また、JDBCTemplate オブジェクト インスタンスの変数名は何でもかまいません。
XPATH 式を作成して特定のクラス メソッド呼び出しの発生を見つけるのはかなり簡単だと思いましたが、コード内のどこにいても、AST ツリーを見ると、それを理解することができません。XPATH は本当に可能ですか、それとも Java コードを書かなければなりませんか?