Я столкнулся с проблемой при использовании PMD для проверки ошибок кода. Я не знаю, как удовлетворить два требования одновременно. Например, если я хочу проверить, что метод с именем ABC, не существующий в файле, расширяется от BCD. Я знаю, как проверить, существует ли ABC или же он расширяется от BCD отдельно с помощью PMD.
Так:
//PrimaryExpression/PrimaryPrefix/Name [@Image = "ABC"];
//ExtendsList/ClassOrInterfaceType [@Image != "BCD"];
теперь, есть в любом случае, что я могу проверить эти два вместе. Например, я хочу, чтобы ABC в классе не расширял BCD. Кажется, я не могу просто использовать такие вещи, как и для соединения этих двух запросов Xpath. Кроме того, я заметил, что могу использовать | чтобы связаться с ними, но | работает как или. Мне нужно и здесь вместо или.
Изменить:
Я пробовал что-то вроде этого:
//PrimaryExpression/PrimaryPrefix/Name[@Image = "ABC"]
[//ancestor::ClassOrInterfaceDeclaration/ExtendsList/
ClassOrInterfaceType[@Image != "BCD"]]
Кажется, это работает для меня, по крайней мере. Но я все еще не уверен на 100%, что это правильный путь, так как я только что попробовал это.