Frage

Ich habe eine sehr große code-Basis, die enthält umfangreiche unit-tests (mit CppUnit). Ich brauche, um herauszufinden, was Prozentsatz der code wird ausgeübt durch diese tests, und (im Idealfall) erzeugen eine Art von Bericht, die mir sagt, auf einer pro-Bibliothek oder pro-Datei-basis, wie viel code, der ausgeübt wurde.

Hier ist der kicker:dies hat zu laufen, komplett unnatended (schließlich innerhalb einer continuous integration-build), und verfügt über cross-Plattform (gut, WIN32-und *nix-mindestens).

Kann jemand empfehlen, ein tool, oder eine Reihe von tools, die mir helfen können, dies zu tun?Ich kann nicht ändern, Weg von CppUnit (hätte ich auch nicht wollen - es kicks ass), aber ansonsten bin ich begierig zu hören, alle Empfehlungen, die Sie haben könnten.

Cheers,

War es hilfreich?

Lösung

Welches tool sollte ich verwenden?

Diese Artikel beschreibt, andere Entwickler, die Frustration der Suche für C++ - code-coverage-tools.Der Autor endgültige Lösung war Bullseye Abdeckung.

Bullseye Abdeckung features:

Wie zum einbinden in Ihre continuous integration, es hängt davon ab, welche CI-Lösung, die Sie verwenden, aber Sie können wahrscheinlich Haken der instrumentation / Abdeckung mess-Schritte in der make-Datei, die Sie verwenden für die automatisierte Prüfung.


Testen von Linux vs Windows?

Solange alle tests korrekt ausgeführt, in beiden Umgebungen sollten Sie in Ordnung sein, Messen die Abdeckung auf die eine oder andere.(Obwohl das Bullseye angezeigt wird zur Unterstützung der beiden Plattformen).Aber warum sind Sie es nicht tun, continuous integration builds in beiden Umgebungen??Wenn Sie liefern zu Kunden in sowohl Umgebungen, dann Sie müssen werden Tests in beiden.

Für diese Grund, es klingt wie Sie möglicherweise benötigen, um zwei kontinuierliche build-Server eingerichtet, eine für einen linux-build und eines für einen windows-build.Vielleicht kann dies leicht geschafft mit einigen Virtualisierungs-software wie vmware oder virtualbox.Sie können nicht zum ausführen von code-coverage-Metriken, die auf beiden Betriebssystemen, aber Sie sollten auf jeden Fall ausgeführt werden, Ihre unit-tests auf beide.

Andere Tipps

Wenn Sie verwenden können GNU GCC als Ihre complier, dann die gcov Werkzeug funktioniert gut.Es ist sehr einfach, vollständig zu automatisieren den gesamten Prozess.

Wenn Sie den GCC toolchain, gcov ist gehen zu bekommen, die Sie source, Funktions-und branch-coverage-Statistiken.gcov funktioniert gut für MinGW und Cygwin.Dies wird Ihnen ermöglichen, eine Berichterstattung von Statistiken sowie aussenden instrumentierte Quellcode, der Ihnen erlaubt, zu visualisieren ausgeführte code.

Allerdings, wenn Sie wirklich wollen, um Sie traf es aus dem park mit ziemlich Berichte, mit gcov in Verbindung mit lcov ist der Weg zu gehen.lcov geben Sie bar-Berichte bezieht sich auf Dateien und Verzeichnisse, funktionale Abdeckung von Statistiken und farbcodierten Quell-Datei durchsuchen, um zu zeigen, Abdeckung (grün bedeutet ausgeführt, rot bedeutet nicht...).

lcov ist, einfach auf Linux, aber kann erfordern einige perl-hacking auf Cygwin.Ich persönlich hatte einige Probleme ausführen des Skripts (lcov ist in perl implementiert) unter Windows.Ich habe eine aufgebohrte version zu arbeiten, aber seien Sie gewarnt.

Ein weiterer Ansatz ist dabei die gcov emittieren, die auf windows-und lcov post-processing unter Linux, wo es wird sicherlich funktionieren.

Schauen Sie sich unsere SD C++ Test Coverage Werkzeug.Es kann erhalten werden, für GCC und für MSVC6.

Es hat eine niedrige overhead-Sonde Daten-Sammlung, eine nette Anzeige von coverage-Daten überlagert auf Ihrem code und den vollständigen Bericht generation mit rollups auf Berichterstattung über die Methode/Klasse/Datei - /Verzeichnis-Ebenen.

EDIT:Aug 2015:Jetzt unterstützt GCC5 und verschiedene MS-Dialekte über Visual Studio 2015.Um diese tools zu verwenden, die unter Linux, müssen Sie den Wein, aber es gibt die tools, die Linux-native sh-scripting und Linux/Java-basierte Benutzeroberfläche, so dass die Werkzeug fühlt sich wie eine native Linux-tool gibt.

Ich glaube, ich sollte angegeben haben, der compiler - wir verwenden gcc für Linux und MSVC 6 (ja ich weiß, es ist alt, aber es funktioniert (meistens) für uns) für WIn32.

Für diese Gründe, gcov funktioniert nicht für unsere Win32 builds, und das Bullseye nicht für unsere Linux-builds.

Dann wieder vielleicht brauche ich nur die Berichterstattung in eine OS...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top