2014-10-20 20 views
5

Ich habe C++/c-Anwendung mit einer Vielzahl von Komponententests. Ich würde gerne eine allgemeine Berichterstattung und auch eine individuelle Berichterstattung über jeden Test mit der Bedingung erhalten, dass jeder Test nur einmal durchgeführt werden kann. Format der Berichterstattung muss xml (Cobertura Xml) für Jenkins Cobertura-Plugin zu verarbeiten sein.Gibt es sowieso zusammen cobertura Berichterstattung xml Berichte zusammenzufassen?

Bisher generiere ich gcno Dateien auf Kompilierung und gcda Dateien, wenn Quelle verwendet wird. Rufen Sie dann gcovr auf, um eine XML-Datei zu erhalten.

Ich möchte Abdeckung jeder Unit-Test erstellen (also Abdeckung xml für jede Unit-Test-Erstellung) und dann diese XML-Dateien in eine XML-Datei zusammenführen.

Danke!

+0

: http://stackoverflow.com/questions/19792510/combine-cobertura-code-coverage-reports-of-three-separate-projects – Grzesuav

+0

Leider Anwendung ist recht komplex und bauen Cmake Skript, keine Ameise/Maven wird verwendet. – x3mspeedy

Antwort

2

Ich schrieb python script die cobertura Berichte miteinander verschmelzen können. Es führt nur Linien "Treffer" zusammen und kann bestimmte Pakete beim Zusammenführen filtern.

Conditional (Verzweigungsrate) Abdeckung und Leitungsabdeckung (Leitungsrate) Prozentwerte sind noch nicht zusammengeführt. Das Jenkins-Plugin berechnet diese Werte neu, sodass es in diesem Kontext nicht implementiert werden muss (aber vielleicht auch).

Auch Conditional Coverage kann scheinbar nicht einfach zusammengefügt werden, so funktioniert es nicht, wenn Berichte auf Endwert zusammenarbeiten (dh eine Datei hat Condition-Coverage 50% (2/4) und andere Condition-Coverage 50% (2/4) andere zwei Zweige. Ergebnis ist höher diese beiden Zahlen sein, so ist es immer noch sein wird 50% (2/4)

0

Ich schaute mir auch die Lösung an, aber in meinem Fall gab es etwa 1000 Cobertura XML-Dateien und alle obigen Skripte waren sehr langsam in der Verarbeitung einer solchen Menge.

Am Ende habe ich mit merge-cobertura.py ein Python-Skript kommen, die die Zusammenführung der Fall ist. Es ist jedoch ziemlich begrenzt in dem, was es unterstützt, da alles, was ich brauchte, war, Berichte von OpenCppCoverage zusammenzuführen, um bei Codecov verwendet zu werden. Es werden also nur Zeilentreffer zusammengeführt, die keine Verzweigungsinformationen enthalten (es wird keine von OpenCppCoverage kommen), und es wird angenommen, dass alle Berichterstellungsberichte für denselben Pfad sind. Es fügt auch alle Pakete in eins zusammen.

Vielleicht wird jemand diesen Kommentar hilfreich als auch gibt es einige weitere Details in my blog. Siehe