1

誰かが私が日食のためにpmdでルールを作成するのを手伝ってくれませんか?PMD公式サイトをフォローしても起動できません。XPathルールの代わりにJavaでルールを作成することを計画しています。それを始めるための簡単なガイドラインはありますか?ありがとう

4

2 に答える 2

0

少し前に、役立つサンプル コードを含むチュートリアルを書きました。

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

于 2011-11-22T22:48:05.520 に答える
0

「Java を使用してルールを作成する」方法を試してみてください。この方法で簡単に開始でき、後で XPath 式を試すことができます。公式リンクと一緒にこれらの手順に従うことができます.

  • PMD に付属の src パッケージ (例: 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) 内に次のルールを追加します。

    「WhileLoopsMustUseBracesRule ルールをルールセット ファイルに入れる」セクションの xml コンテンツをコピーして、basic.xml に貼り付けます。

    ラインを交換する

    class="WhileLoopsMustUseBracesRule">
    

    class="net.sourceforge.pmd.rules.basic.WhileLoopsMustUseBracesRule">
    

    パッケージ「net.sourceforge.pmd.rules.basic」内にJavaファイル(WhileLoopsMustUseBracesRule.java)を作成している必要があるため

  • Windows の場合は、cmd プロンプトからこのコマンドを実行します。


    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.bat の代わりに pmd.sh を使用します。
  • 実行できるようになったら、独自のパッケージ内に独自のルールを作成できます。

お役に立てれば。!

于 2011-09-22T10:50:07.060 に答える