1

私はこのjavaparser https://github.com/javaparser/javaparserを使用して、一部のgithubユーザーの多くのJavaソースコードを解析して、統計を作成しています(これは大学のプロジェクト用です)。すべて正常に動作しているように見えますが、ある時点で、特定のソース コードで次のエラーが発生します。

Exception in thread "main" com.github.javaparser.TokenMgrError: Lexical error at line 6, column 2.  Encountered: <EOF> after : ""

そのファイルには次のように書かれています。

public class Test {
    /**<caret>
    public void foo() {
    }
}

これは私がファイルを解析する方法です:

...

new NodeIterator(new NodeIterator.NodeHandler() {
    @Override
    public boolean handle(Node node) {
        ...
    };
}).explore(JavaParser.parse(file));

...

これは NodeIterator クラスです。

public class NodeIterator {
    public interface NodeHandler {
        boolean handle(Node node);
    }

    private NodeHandler nodeHandler;

    public NodeIterator(NodeHandler nodeHandler) {
        this.nodeHandler = nodeHandler;
    }

    public void explore(Node node) {
        if (nodeHandler.handle(node)) {
            for (Node child : node.getChildrenNodes()) {
                explore(child);
            }
        }
    }
}

問題は理解できましたが、この問題により解析全体が停止します。for 内に解析するファイルがたくさんあるので、他のファイルを解析し続けるにはどうすればよいですか? または、解析する前にJavaファイルが「適切に記述されている」かどうかを確認するツールはありますか?

4

1 に答える 1

3

それは問題ではないので、「問題」を解決することはできません。解析しようとしているソース コードが正しくないため、エラーは正しいです。ファイルの終わりの前に終了していないコメントがあります。

で同じソース コードをコンパイルするとjavac、エラーが発生します。より詳細javaparserですが、解析しようとしているソースにこのエラーがあるため、エラーでもあります。

Javac 出力:

Test.java:2: error: unclosed comment
    /**<caret>
    ^
Test.java:6: error: reached end of file while parsing
2 errors
于 2016-07-21T14:37:04.283 に答える