Попробуйте метод «Написать правило с использованием Java», так как вы можете легко начать этот путь, а позже вы можете попробовать использовать выражения XPath. Вы можете выполнить следующие действия вместе с официальной ссылкой .
- Начните с пакета src, который поставляется с PMD (например, pmd-4.2.x \ src), создайте свой класс Java в существующем пакете (например, pmd-4.2.5 \ src \ net \ sourceforge \ pmd \ rules \ basic) ). В данном случае это следующий пример кода (WhileLoopsMustUseBracesRule):
package net.sourceforge.pmd.rules.basic;
import net.sourceforge.pmd.*;
import net.sourceforge.pmd.ast.*;
public class WhileLoopsMustUseBracesRule extends AbstractRule {
public Object visit(ASTWhileStatement node, Object data) {
SimpleNode firstStmt = (SimpleNode)node.jjtGetChild(1);
if (!hasBlockAsFirstChild(firstStmt)) {
addViolation(data, node);
}
return super.visit(node,data);
}
private boolean hasBlockAsFirstChild(SimpleNode node) {
return (node.jjtGetNumChildren() != 0 && (node.jjtGetChild(0) instanceof ASTBlock));
}
}
Добавьте следующее правило в basic.xml (pmd-4.2.5 \ rulesets \ basic.xml):
Скопируйте и вставьте содержимое XML из раздела «Поместите правило WhileLoopsMustUseBracesRule в файл набора правил» в файл basic.xml.
Заменить строку
class="WhileLoopsMustUseBracesRule">
с
class="net.sourceforge.pmd.rules.basic.WhileLoopsMustUseBracesRule">
как вы, должно быть, создали файл Java (WhileLoopsMustUseBracesRule.java) внутри пакета "net.sourceforge.pmd.rules.basic"
Запустите эту команду из командной строки, если в Windows.
pmd.bat C:\JAVAFILE_ON_WHICH_YOU_WANT_TO_RUN_THIS_RULE xml C:\PMD\pmd-4.2.5\pmd-4.2.5\rulesets\basic.xml
- Для nix os (linux / MacOS) используйте pmd.sh вместо pmd.bat
- Как только вы сможете запустить его, вы можете создать свое собственное правило внутри собственного пакета.
Надеюсь, это поможет.!