2014-12-07 1 views
6

Nel mio codice apro il mio file.java e lo analizzo con JavaParser.Come verificare se un file sorgente Java è valido (non ha errori)?

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 

    } 
} 

In file.java c'è un errore: Il metodo main chiama il metodo ownMethod con un parametro, ma ownMethod aspetta 0 parametri. JavaParser non rileva questo errore e analizza file.java con questo errore. Come posso sapere (nel mio codice) se file.java non ha errori? È possibile senza usare un compilatore Java?

+0

classe deve essere scritta utilizzando una c minuscola. :) – Phiwa

+0

grazie Phiwa: P my bad – user1951618

+0

Nessun problema, sono piccole cose che non ti vedi mai. :) – Phiwa

risposta

4

Is it posible without using java compiler?

No. Qualsiasi soluzione, che il vostro (ri?) Inventare, vi porterà a yet-another-one compilatore. Parse & convalida degli errori è una parte essenziale del lavoro del compilatore.

+0

Beh, l'IDE può verificarlo senza compilarlo esplicitamente (sì, in realtà lo compila, ma in background e non lo vedi mai, quindi penso che conti) – MightyPork

+1

@ MightyPork In modo esplicito o implicito, lo compila. Quindi i punti di ursa stanno. – lexicore

+0

Sono d'accordo: ci sono molte cose per le quali hai fondamentalmente bisogno di un compilatore. Tuttavia, abbiamo in programma di costruire alcune validazioni in JavaParser in futuro, in modo da poter verificare se l'AST è valido. Per una validazione completa dovremmo anche usare JavaSymbolSolver, che risolve tipi e chiamate di metodo. Fondamentalmente ri-implementa un sacco di cose che trovi in ​​un compilatore. –