<< ThinkPad + Ubuntu 7.10で音量調整できない。 | Home | NetBeans 6.0.1 >>
PR: 転職    お墓    エコ    通販    結婚相談所    シルバー    質屋    葬式    漫画    エステサロン   

PMDをアプリケーションから呼び出して使う。

意外と簡単。

Parser parser = new Java14Parser();
ASTCompilationUnit acu = (ASTCompilationUnit) parser
        .parse(new FileReader("src/Sample.java"));

とやってパーサに読み込ませれば、ツリー構造が出来上がり。acu.dump("");すれば内容が確認できる。こんなクラスをパースさせると、

public class Sample {
    int foo(int i) {
        return java.lang.Integer.MAX_VALUE + 1;
    }
}

こんなのが出来上がる。

CompilationUnit
 TypeDeclaration
  ClassOrInterfaceDeclaration(Sample)(class)
   ClassOrInterfaceBody
    ClassOrInterfaceBodyDeclaration
     MethodDeclaration:(package private)
      ResultType
       Type
        PrimitiveType:int
      MethodDeclarator:foo
       FormalParameters
        FormalParameter:(package private)
         Type
          PrimitiveType:int
         VariableDeclaratorId:i
      Block
       BlockStatement
        Statement
         ReturnStatement
          Expression
           AdditiveExpression:+
            PrimaryExpression
             PrimaryPrefix
              Name:java.lang.Integer.MAX_VALUE
            PrimaryExpression
             PrimaryPrefix
              Literal:1

で、特定の構造に着目したい時はビジタパターンで抜き出すことができる。たとえばimport文を調べたい場合は、以下のようにすれば良い。

JavaParserVisitorAdapter visitor = new JavaParserVisitorAdapter() {
    public Object visit(ASTImportDeclaration node, Object data) {
        // ...
        return super.visit(node, data);
    }
};
visitor.visit(acu, null);



コメント追加 トラックバック送信
このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8