2009-11-24 5 views
5

Gibt es eine Möglichkeit, alle leeren catch-Blöcke in Java-Code zu finden? Ich weiß, dass es einige Tools wie PMD gibt, aber ich verwende RSA. Gibt es eine Möglichkeit, eine Regex zu schreiben, um nach leeren Catch-Blöcken zu suchen?So finden Sie leere Fangblöcke in Java-Code

Update: Ich arbeite an einer Unternehmensmaschine, wo ich keine neue Software installieren kann.

+0

warum Verbot würde mit RSA Sie von PMD verwenden, Check etc? Gibt es dort eine weitere Anforderung? –

Antwort

6

Die Eclipse-Java-Compiler konfiguriert werden können Warnungen (oder Fehlermeldung) für leere Aussagen zu produzieren:

Java> Compiler> Fehler/Warnungen> Leere Anweisung.

Sie könnten die batch compiler (Running the batch compiler) verwenden, wenn Sie nicht Eclipse verwenden.

Aber dann könnten Sie auch andere Java-Tools verwenden. Die Verwendung einer Java-Bibliothek ist keine Softwareinstallation. Solange die JRE nicht durch die Konfiguration des Sicherheitsmanagers gesperrt ist, sollte dies immer funktionieren.

+1

Das hat mir natürlich nicht den genauen Weg geholfen. Anstelle von "leere Anweisung" verwendete ich "undokumentierter leerer Block". Dies hat tatsächlich alle leeren Fangblöcke gefunden. – micheal

+0

Danke, das ist großartig! :) Findet auch alle leeren Konstruktoren usw., die eventuell Kommentare benötigen. –

2

Etwas wie folgt aus:

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

Dies wird leer catch Anweisungen geben, aber nicht diejenigen, mit Kommentaren.

+2

Vergessen Sie nicht, die 'Pattern.MULTI_LINE' zu kompilieren. Und Sie haben vergessen, Kommentare im Codeblock auszuschließen. –

2

Verwenden Sie PMD über die Befehlszeile, aus einem Ant-Skript oder verwenden Sie Maven, um Ihre Projekte zu erstellen. Auf diese Weise können Sie Ihre Ergebnisse automatisch erstellen und testen und Tools wie PMD oder FindBugs ausführen.

9

können Sie diesen regulären Ausdruck verwenden:

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

Wo dieser Unterausdruck, in Stephen Ostermiller's website gefunden, passt auf jedes Java Kommentar:

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

Danke Paolo! Hat mir etwas Arbeit gerettet. –