我正在使用这个 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 文件是否“写得好”?