Ich verwende gcov.
Mein Setup ist ziemlich kompliziert, jetzt, dass ich beschreiben, daran zu denken habe:
Ich habe die MinGW-Distribution von stl, erhältlich bei nuwen.net für gcc (g ++) und gcov verwendet. Dies gibt mir ein gewisses Maß an Portabilität.
Ich baue meine Testanwendung mit Hilfe von SCONs und einer Batch-Datei, um sie zu erstellen und auszuführen, um zu überprüfen, ob sie erfolgreich ist.
Dann beginne ich Code zur Versionskontrolle und ein Jenkins CI-Server, der auf meinem eigenen Rechner läuft, nimmt ihn auf und verwendet immer noch Scons, kompiliert ihn, aber dieses Mal mit dem --coverage
Flag. Es läuft die Test-App, die diesmal die * .gc ?? Dateien. Dann führe ich gcov einmal aus, sage aber, wo alle Dateien sind, was eine Menge * .gcov-Dateien erzeugt. Ich habe in der Vergangenheit das Python-Skript gcovr.py
verwendet, aber ich habe seitdem meine eigenen geschrieben, um alle * .gcov-Dateien zu scannen und alle nicht abgedeckten Zeilen zu drucken.
Ich bin nicht sicher über den Open-Source-Status all dieser Stücke, aber ich weiß, dass sie frei sind.
Hinweis: Wenn Sie VS10 verwenden, können Sie verwenden, um einige C++ 11 Funktionen unter der Haube, z Verschieben Sie die Semantik in der Standardbibliothek, es sei denn, Sie haben _HAS_CPP0X = 0 definiert –
@Arne Mertz Ja, ich habe #define_HAS_CPP0X 0, danke! – Baz