2009-04-16 12 views
15

Necesito configurar un archivo de filtro para mi script findbugs ant que escanea solo los archivos src/* y no los archivos de prueba/*.Archivo de filtro FindBugs para ignorar las pruebas JUnit

¿Cuál es la sintaxis para verificar todas las clases sin tener en cuenta ningún nombre de archivo o nombre de paquete con 'prueba' en el nombre?

Respuesta

22

FindBugs está realmente escaneando los archivos de clase compilados, no el sourcePath. Si está compilando sus archivos src/* y test/* en los diferentes directorios, puede usar el elemento anidado <class...>.

<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> 

Eso no funcionará si src/* y test/* se compilan en un solo directorio. En ese caso, use un filter file y excluya los paquetes o nombres de clase que corresponden a las pruebas.

<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> 

donde exclude.xml parece:

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

buena explicación ... al parecer tengo que empezar a tomar café o algo así. Eliminado mi respuesta, que bien correcta es engañosa. – TofuBeer

-1

Por cierto, es una buena ideapara cubrir las pruebas unitarias con FindBugs también. No hay razón para usar estándares de calidad más bajos para las pruebas. Los errores en la prueba son solo eso, errores.

Claro, si ejecuta FindBugs por primera vez, puede haber muchos informes de errores, pero el recuento de errores se reducirá si le presta atención.

+12

El problema con esto es que prueba los casos de error en la prueba unitaria (como pasar nulo como un parámetro que está marcado como @Nonnull) –

Cuestiones relacionadas