Как получить пакет объявления локальной переменной в PMD и XPath? - PullRequest
0 голосов
/ 31 января 2011

Моя проблема

Я хочу создать настраиваемый набор правил для PMD , который находит все объявленные переменные, которые используют определенный пакет.И это должен быть XPath набор правил, потому что мне легче его поддерживать.

Что у меня есть

Я могу найти import операторов ипеременные.Я использую этот XPath , чтобы найти объявления:

//VariableDeclarator[../Type
                          /ReferenceType
                             /ClassOrInterfaceType
                                [@Image = 'ClassA']]

Однако, это соответствует только точному классу, но я хочу проверить, происходит ли этот класс из пакета my.packageи я не знаю, как это получить.

Есть намеки?

1 Ответ

1 голос
/ 31 января 2011

Прошло некоторое время с тех пор, как я использовал PMD, и я ухожу из памяти здесь, но попробуйте поставить перед вашим XPath:

//ClassOrInterfaceDeclaration[preceding::PackageDeclaration/Name/@Image = 'my.package']//VariableDeclarator[etc..

По сути, он ищет связанный узел в XML, который объявляет соответствующий пакет. Как я уже сказал, это из довольно старой памяти, но, надеюсь, это должно как минимум направить вас в правильном направлении.

...