2009-11-24 13 views
5

C'è un modo per scoprire tutti i blocchi di cattura vuoti all'interno del codice Java? So che ci sono alcuni strumenti come PMD per farlo, ma sto usando RSA. C'è un modo per scrivere una regex per cercare blocchi di cattura vuoti?Come trovare blocchi di cattura vuoti in codice Java

Aggiornamento: Sto lavorando su una macchina aziendale, in cui non posso installare un nuovo software.

+0

perché sarebbe utilizzando divieto RSA si usare i PMD, checkstyle eccetera? C'è un altro requisito lì? –

risposta

6

Il Eclipse Java compilatore può essere configurato per produrre avvertenze (o messaggio di errore) per le dichiarazioni vuote:

Java> Compiler> Errori/Avvisi> istruzione vuota.

È possibile utilizzare batch compiler (Running the batch compiler) se non si utilizza eclissi.

Tuttavia, è possibile utilizzare anche altri strumenti Java. L'utilizzo di una libreria Java non è un'installazione software. Finché JRE non è bloccato dalla configurazione del gestore della sicurezza, questo dovrebbe sempre funzionare.

+1

Questo mi ha aiutato, ovviamente non nel modo esatto. invece di "istruzione vuota" ero solito "blocco vuoto non documentato". questo in realtà ha trovato tutti i blocchi di cattura vuoti. – micheal

+0

Grazie, è grandioso! :) Trova anche tutti i costruttori vuoti ecc. Che potrebbero richiedere alcuni commenti. –

2

Qualcosa di simile a questo:

catch[\s]*\([^\)]*\)[\s]*{[\s]*} 

Ciò restituirà vuote catch dichiarazioni, ma non quelli con i commenti.

+2

Non dimenticare di compilare 'Pattern.MULTI_LINE'. E hai dimenticato di escludere i commenti nel blocco di codice. –

2

Usa PMD dalla riga di comando, da uno script Ant o usa Maven per costruire i tuoi progetti. In questo modo, puoi creare e testare automaticamente i tuoi prodotti finali ed eseguire strumenti come PMD o FindBugs.

9

È possibile utilizzare questa espressione regolare:

catch\s*\([^\)]*\)\s*\{((/\*(.|[\r\n])*?\*/)|\s)*\} 

Dove questo sub-espressione, che si trova in Stephen Ostermiller's website, corrisponde a qualsiasi commento Java:

/\*(.|[\r\n])*?\*/ 
+0

Grazie Paolo! Mi ha salvato un po 'di lavoro. –