Как создать правило для комментариев Java в PMD? - PullRequest
1 голос
/ 02 октября 2010

Может кто-нибудь помочь мне создать правило в pmd для затмения? Я не могу начать, даже если я следовал через официальный сайт PMD. Я планирую создать правило в Java вместо правила XPath. Какие-нибудь простые рекомендации, чтобы начать это? Спасибо

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

Я недавно написал учебник с примером кода, который может быть полезен.

http://www.techtraits.ca/writting-pretty-code-with-pmd/

0 голосов
/ 22 сентября 2011

Попробуйте метод «Написать правило с использованием 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
  • Как только вы сможете запустить его, вы можете создать свое собственное правило внутри собственного пакета.

Надеюсь, это поможет.!

...