2009-06-04 24 views
48

¿Existe alguna forma de excluir el código de la inclusión en los informes de cobertura de Cobertura? Tenemos algunos métodos que no deberían incluirse en el informe de cobertura y, por lo tanto, no reducir los números de cobertura.Excluir métodos de cobertura de código con Cobertura

Sé que Clover tiene esa funcionalidad, pero no he encontrado nada similar para Cobertura.

+0

Esperemos que llegue pronto. Problema: http://sourceforge.net/tracker/?func=detail&atid=720017&aid=3010530&group_id=130558 y conversación sobre un lanzamiento para incluir este http://sourceforge.net/mailarchive/forum.php?thread_name=0F4966F4B6F55240A08C5F9AD979B3BE07E7EFB3%40MERCMBX16D. na.SAS.com & forum_name = cobertura-devel –

+0

Ver [esta publicación] (http://stackoverflow.com/questions/8848585/excluding-java-files-in-sonar-report-through-jenkins/13003357#13003357), esto es una opción para excluir el código de cobertura con sonar y jenkins pero espero que su respuesta se pueda aplicar a los proyectos que no sean jenkins –

Respuesta

52

Puede excluir clases de la instrumentación. Entonces no deberían aparecer en los informes. Consulte para excluir las declaraciones a continuación.

También puede ignorar las llamadas a algunos métodos. Consulte ignore la declaración a continuación.

Si está utilizando maven, consulte maven plugin manual.

<configuration> 
     <instrumentation> 
     <ignores> 
      <ignore>com.example.boringcode.*</ignore> 
     </ignores> 
     <excludes> 
      <exclude>com/example/dullcode/**/*.class</exclude> 
      <exclude>com/example/**/*Test.class</exclude> 
     </excludes> 
     </instrumentation> 
    </configuration> 

Y para la hormona vea this.

<cobertura-instrument todir="${instrumented.dir}"> 
    <ignore regex="org.apache.log4j.*" /> 
    <fileset dir="${classes.dir}"> 
    <include name="**/*.class" /> 
    <exclude name="**/*Test.class" /> 
    </fileset> 
    <fileset dir="${jars.dir}"> 
    <include name="my-simple-plugin.jar" /> 
    </fileset> 
</cobertura-instrument> 
+0

Gracias. ¿Hay algo que pueda agregarse al código para excluir un método? Sería más fácil que una larga lista larga en ANT. ¿Algún soporte de anotación? – ReneS

+0

Hice una búsqueda muy rápida en los documentos de Cobertura, pero no pude encontrar nada sobre las anotaciones de Cobertura. Por lo tanto, parece que necesita trabajar en las pruebas de su unidad o en la estructura del paquete para acortar sus listas de exclusión;) –

+0

Ok, eso confirma que no me he perdido nada. Esperanza de una característica oculta ...Bueno, tal vez lo hagamos tarde o temprano. ¡Gracias! – ReneS

3

Cobertura actualmente no proporciona una característica de este tipo, y tampoco lo hace Emma (que utilizamos) a pesar de que aparece como una próxima mejora - aunque en la forma de una extensión de las reglas de exclusión creo que en lugar de como una anotación

Sería útil para cubrir esas esquinas inaccesibles limpiamente para que pueda luchar por el 100% sin ser ridículo.

Creo que las anotaciones probablemente serían una forma más amigable de hacerlo, pero deberían nombrarse de manera bastante explícita y basarse en una lista de escenarios aceptables ya que me temo que algo como '@ExcludeFromCoverage' se agregaría generosamente.

+0

-1 porque es incorrecto escribir "Actualmente, la cobertura no ofrece esa función". Lo hace, de acuerdo con la respuesta aceptada. –

+0

-1 porque está mal –

+0

@Jason, mira mi respuesta, tal vez estés cometiendo el mismo error que yo. –

21

Esto ha estado rompiendo mi cabeza desde hace un tiempo.

Mi problema fue que tenía la configuración del complemento de cobertura maven en la sección de informes en lugar de la sección de compilación.

La configuración de instrumentación, y por lo tanto la exclusión de clases o paquetes, no se aplicará si no lo configura en la sección de creación, así que ten cuidado con esto.

+0

¡Esta es la respuesta correcta! Estaba golpeando mi cabeza contra esto también poniéndolo en la sección de un Maven 3.0.4 pom. – Melloware

+2

puede dar un ejemplo? – add9

+0

@ add9 Comprobar: http://www.mojohaus.org/cobertura-maven-plugin/usage.html – sebadagostino

17

Recuerde excluir las clases internas también.

<exclude>path/to/class/MyClass*.class</exclude> 

¡Me llevó siglos darme cuenta de que me faltaba un asterisco!

+0

¡Encontró que esta es la respuesta más útil! Aparentemente, la estrella antes del punto es esencial para que esto funcione. ¡Gracias! – pdp

Cuestiones relacionadas