2014-12-07 149 views
6

在我的代码中,我打开我的file.java并用JavaParser解析他。如何检查Java源文件是否有效(没有错误)?

FileInputStream in = new FileInputStream(".../file.java"); 

     CompilationUnit cu; 

     try { 
      // parse the file 
      cu = JavaParser.parse(in); 
     } finally { 
      in.close(); 
     } 

........ 

file.java

public class File{ 

    public void ownMethod(){...} 

    public static void main(String[] args){ 

      ownMethod(5); //Note the extra parameter 

    } 
} 

在file.java有一个错误:main调用方法ownMethod带有一个参数的方法,但ownMethod预计0的参数。 JavaParser不会检测到这个错误,并分析出现这个错误的file.java。我怎么知道(在我的代码中)file.java是否没有错误?没有使用java编译器是否可行?

+0

类需要使用小写字母c写入。 :) – Phiwa 2014-12-07 18:18:50

+0

谢谢Phiwa:P我的不好 – user1951618 2014-12-07 18:23:23

+0

没问题,那些你从未见过你的小事。 :) – Phiwa 2014-12-07 18:25:35

回答

4

Is it posible without using java compiler?

不是。任何解决方案,您的(重新)发明,将导致你到另一个编译器。解析&验证错误是编译器工作的重要部分。

+0

IDE可以验证,没有明确编译它(是的,它实际上是编译它,但在后台,你永远不会看到它,所以这个计数我猜) – MightyPork 2014-12-07 19:05:26

+1

@MightyPork显式或隐式地,它编译它。所以ursa的观点就是这样。 – lexicore 2014-12-07 19:14:49

+0

我同意:有很多事情你基本上需要一个编译器。然而,我们打算将来在JavaParser本身中构建一些验证,因此我们可以检查AST是否有效。对于完整的验证,我们还需要使用JavaSymbolSolver来解析类型和方法调用。它基本上重新实现了许多在编译器中找到的东西。 – 2016-11-28 12:30:55