3

プロジェクトで Eclipse JDT コア パーサーを使用して Java ソース ファイルを解析しようとしていますが、問題の 1 つは、ファイルからコメントのリストを取得できないことです。getCommentsでメソッドを呼び出してみましたCompilationUnitが、空のコメントのリストが表示されます。

Test1.javaこれは、ソースがここにあるテスト プロジェクトからのものです。

public class Test1 {

public static void main(String[] args) throws IOException {
    File file = new File("src/main/java/DummyFile.java");
    FileReader fileReader = new FileReader(file);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    StringBuilder source = new StringBuilder();
    String line = "";
    while ((line = bufferedReader.readLine()) != null) {
        source.append(line + System.getProperty("line.separator"));
    }

    bufferedReader.close(); 

    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    parser.setSource(source.toString().toCharArray());
    parser.setResolveBindings(true);
    Hashtable<String, String> options = JavaCore.getOptions();
    options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
    parser.setCompilerOptions(options);
    CompilationUnit cu = (CompilationUnit) parser.createAST(null);

    List comments = cu.getCommentList();

    System.out.println(cu); // breakpoint is here.

    for (Object comment : comments) {
        System.out.println(comment.toString());
    }
}

DummyFile.java は次のとおりです。

public class DummyFile {
    // 1
    private String str;
    public static int number;

    public DummyFile() { // 2
        // 3
        str = "something";
        number = 2; // 4
        // 5
    }
    // 6
}

これは出力です:

public class DummyFile {
    private String str;
    public static int number;
    public DummyFile(){
        str="something";
        number=2;
    }
}

//

//

//

//

//

//

これは、compilerUnit 内を見てコメントのリストを見ると、デバッガーに表示されるものです。

[//
, //
, //
, //
, //
, //
]

これが正常な動作なのかどうか、もしそうなら、コメントの内容を取得するにはどうすればよいのか、または何が間違っているのか疑問に思っていました。

これが通常の動作ではない場合、何が問題で、何を探すべきかについて誰かが何か提案があるかもしれません。

4

1 に答える 1

2

CompilationUnitのメソッドで取得したgetCommentList()コメントにはコメント本体がありません。また、コメントは AST 訪問中に訪問されません。コメントにアクセスするにはaccept、コメント リストの各コメントに対して ' ' を呼び出す必要があります。

CompilationUnit からコメントを抽出する方法については、以下の質問への回答を参照してください。

ast で生成された Java コンパイラ ツリー API からコメントにアクセスするにはどうすればよいですか?

于 2012-10-19T11:11:57.943 に答える