<< 2008/02/04 | Home | 2008/02/06 >>
PR: 転職    葬式    マンスリーマンション 神戸    北海道    環境    FX    不動産担保融資    桐ヶ谷斎場    海外旅行    専門学校   

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