2009-04-16 8 views
15

Ich muss eine Filterdatei für mein findbugs ant-Skript einrichten, die nur die src/* -Dateien und nicht die test/* -Dateien durchsucht.FindBugs-Filterdatei zum Ignorieren von JUnit-Tests

Wie lautet die Syntax zum Überprüfen aller Klassen, während ein Dateiname oder Paketname ignoriert wird, wenn im Namen 'test' steht?

Antwort

22

FindBugs scannt tatsächlich die kompilierten Klassendateien, nicht die sourcePath. Wenn Sie die Dateien src/* und test/* in den verschiedenen Verzeichnissen kompilieren, können Sie einfach das verschachtelte Element <class...> verwenden.

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}"> 
    <class location="${src.classes.dir}"/> 
</findbugs> 

Das funktioniert nicht, wenn src/* und test/* beide in ein einzelnes Verzeichnis kompiliert werden. Verwenden Sie in diesem Fall eine filter file und schließen Sie die Pakete oder Klassennamen aus, die den Tests entsprechen.

<findbugs home="${findbugs.dir}" output="xml:withMessages" 
    outputFile="${findbugs.report.xml}" jvmargs="-Xmx256M" 
    effort="max" projectName="${ant.project.name}" 
    auxClasspathRef="findbugs.classpath" 
    sourcePath="${src.dir}" 
    excludefilter="exclude.xml"> 
    <class location="${classes.dir}"/> 
</findbugs> 

wo exclude.xml wie folgt aussieht:

<FindBugsFilter> 
    <Match> 
    <Class name="~.*Test$"/> 
    </Match> 
    <Match> 
    <Package name="~test\..*"/> 
    </Match> 
</FindBugsFilter> 
+0

gute Erklärung ... anscheinend muss ich anfangen, Kaffee oder etwas zu trinken. Löschte meine Antwort, die gut korrekt ist irreführend. – TofuBeer

-1

By the way, es ist eine gute Idee, Unit-Tests mit FindBugs sowie zu decken. Es gibt keinen Grund, niedrigere Qualitätsstandards für Tests zu verwenden. Bugs im Test sind nur das, Bugs.

Sicher, wenn Sie FindBugs zum ersten Mal ausführen, kann es viele Fehlerberichte geben, aber die Anzahl der Fehler verringert sich, wenn Sie ihnen Aufmerksamkeit schenken.

+12

Das Problem dabei ist, dass Sie die Fehlerfälle im Komponententest testen (z. B. das Übergeben von null als Parameter, der @Nonnull markiert ist) –