2009-06-04 13 views
48

Czy istnieje sposób na wykluczenie kodu z włączenia do raportów pokrycia Cobertura? Mamy kilka metod, które nie powinny być uwzględnione w raporcie pokrycia, a zatem nie obniżać numerów ubezpieczenia.Wyklucz metody z zakresu kodu za pomocą Cobertura

Wiem, że Clover ma taką funkcjonalność, ale nie znalazłem nic podobnego dla Cobertury.

+0

Mam nadzieję, że już wkrótce. Problem: http://sourceforge.net/tracker/?func=detail&atid=720017&aid=3010530&group_id=130558 i rozmowa na temat wydania, aby uwzględnić tę http://sourceforge.net/mailarchive/forum.php?thread_name=0F4966F4B6F55240A08C5F9AD979B3BE07E7EFB3%40MERCMBX16D. na.SAS.com i nazwa_ forum = cobertura-devel –

+0

Zobacz [ten post] (http://stackoverflow.com/questions/8848585/excluding-java-files-in-sonar-report-through-jenkins/13003357#13003357), to to opcja do wykluczenia kodu cobertury z sonarem i dżunglą, ale mam nadzieję, że jego odpowiedź może dotyczyć projektów non jenkins –

Odpowiedz

52

Możesz wykluczyć klasy z oprzyrządowania. Wtedy nie powinny pojawiać się w raportach. Zobacz poniżej instrukcje dotyczące z wyłączeniem.

Możesz również ignorować połączenia z niektórymi metodami. Zobacz poniższe stwierdzenie: zignoruj ​​.

Jeśli używasz maven, zobacz 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> 

A dla mrówki patrz 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

Dzięki. Czy istnieje coś, co można dodać do kodu, aby wykluczyć metodę? Byłoby łatwiejsze niż długa długa lista w ANT. Jakiekolwiek wsparcie dotyczące adnotacji? – ReneS

+0

Zrobiłem bardzo szybkie wyszukiwanie do doktorów Cobertury, ale nie mogłem znaleźć żadnych komentarzy na temat adnotacji Cobertury. Wygląda więc na to, że musisz popracować nad swoimi testami jednostkowymi lub strukturą pakietu, aby skrócić listy wykluczeń;) –

+0

OK, to potwierdza, że ​​niczego nie przeoczyłem. Nadzieja na ukrytą funkcję ...cóż, może dostaniemy prędzej czy później. Dzięki! – ReneS

3

Cobertura aktualnie nie dostarczy takiej funkcji, a nie robi Emma (którego używamy), chociaż jest on wymieniony jako nadchodzącej poprawy - choć w formie rozszerzenia zasad wykluczenia wierzę, zamiast jako adnotacja.

Czyścisz się, aby oczyścić te kilka niedostępnych zakątków tak, abyś mógł dążyć do 100% bez bycia niedorzecznym.

Myślę, że adnotacje byłyby prawdopodobnie bardziej przyjaznym sposobem na zrobienie tego, ale powinny być dość jednoznacznie nazwane i oparte na liście dopuszczalnych scenariuszy, ponieważ obawiam się, że w przeciwnym razie coś takiego jak "@ExcludeFromCoverage" zostanie dodane przez hojnie.

+0

-1, ponieważ niepoprawne jest pisanie "cobertura obecnie nie zapewnia takiej funkcji". Tak jest, zgodnie z przyjętą odpowiedzią. –

+0

-1 ponieważ jest źle –

+0

@Jason, zobacz moją odpowiedź, może robisz ten sam błąd co ja. –

21

Od jakiegoś czasu łamie mi to głowę.

Mój problem polegał na tym, że miałem konfigurację wtyczki cobertura maven w sekcji raportowania zamiast sekcji kompilacji.

Ustawienia oprzyrządowania, a tym samym wykluczenie klas lub pakietów, nie zostaną zastosowane, jeśli nie skonfigurujesz go w sekcji kompilacji, więc uważaj na to.

+0

To jest właściwa odpowiedź! Waliłem głową o to także umieszczając go w sekcji Maven 3.0.4 pom. – Melloware

+2

czy możesz podać przykład? – add9

+0

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

17

Pamiętaj też o wykluczeniu klas wewnętrznych.

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

Zajęło mi wieki zauważenie, że brakowało mi gwiazdki!

+0

Okazało się, że jest to najbardziej przydatna odpowiedź! Podobno gwiazda przed kropką jest niezbędna, aby to zadziałało. Dzięki! – pdp

Powiązane problemy