Ich verwende VS 2015 Enterprise, und ich habe einen generischen Komponententest ausgeführt, um die Codeabdeckung zu analysieren. Ich schaue mir die Liste der abgedeckten Blöcke pro Funktion an, und sie scheinen im Allgemeinen korrekt zu sein. Wenn ich jedoch mit der rechten Maustaste auf eine Methode klicke -> "Gehe zum Quellcode", wird sie bei einigen Funktionen an die richtige Stelle im Quelltext (die entsprechende .cpp-Datei) verschoben, bei anderen versucht sie, die Header-Datei zu öffnen (Die Quellzeilennummer ist korrekt, aber der Code befindet sich in der .cpp-Datei - nicht in der .h-Datei. Dies wirkt sich auf die Hervorhebung des Quellcodes aus - die Funktionen, von denen VS glaubt, dass sie sich in .h befinden, sind in der .cpp nicht hervorgehoben. Ich kann keinen Unterschied in den Funktionen feststellen (gleiche Sichtbarkeit, gleiche Kopf- und Quelldateien), außer vielleicht welchen Thread sie aufgerufen haben. Irgendeine Idee, warum VS denkt, dass etwas Code in .h eher als .cpp ist?Visual Studio 2015 Code Coverage Falsche Datei
Antwort
Offensichtlich, obwohl VS 2015 die C++ 11-Funktion non-static data member initializers unterstützt (es kompiliert korrekt), drosselt das Coverage-Tool auf diese Funktion. Hier ist der MCVE. Ich benutze VS 14.0.24720.00 Update 1. Um zu reproduzieren, kompilieren Sie dieses Programm, dann erhalten Code Coverage, indem Sie es mit einem Generic Test ausführen. Wenn x
initialisiert wird, sucht das Coverage-Tool nach dem Code für den Konstruktor in der H-Datei. Wenn Sie = 0
herausnehmen, identifiziert es die Konstruktordefinition wie in der .cpp korrekt. In meinem Produktcode waren nicht der Konstruktor, sondern anscheinend zufällige Funktionen, die das Coverage-Tool dachte, in der .h-Datei definiert. Die Fehlerbehebung bestand in meinem Fall lediglich darin, die Datenelementinitialisierung in die Konstruktorinitialisierungsliste zu verschieben.
.
// .cpp
#include "Test.h"
#include <iostream>
Test::Test()
{
std::cout << "in Test()" << std::endl;
}
Test::~Test()
{
}
void Test::Func1()
{
std::cout << "in Func1" << std::endl;
Func2();
Func3();
}
void Test::Func2()
{
std::cout << "in Func2" << std::endl;
}
void Test::Func3()
{
std::cout << "in Func3" << std::endl;
}
- 1. Autoeigenschaften aus Code Coverage in Visual Studio 2015 ausschließen
- 2. Code/Branch Coverage-Tool für Visual Studio 2015
- 3. Visual Studio 2012 Code Coverage
- 4. Code Coverage mit TFS 2015
- 5. Code Coverage in Android Studio
- 6. Datei nicht gefunden Ausnahme Visual Studio 2015
- 7. Für Visual Studio Community 2015 kann ich Code Coverage-Funktionalität für C++ verwenden?
- 8. Visual Studio 2015 Code Coverage warf - Konnektivität konnte nicht aktiviert werden
- 9. Anzeigen von Code-Coverage-Ergebnissen außerhalb von Visual Studio
- 10. Visual Studio 2015 Buildfehler
- 11. Visual Studio 2015-Befehlsfenster
- 12. Visual Studio Migration 2015
- 13. Visual Studio 2015 Intellisense
- 14. Xamarin + Visual Studio 2015
- 15. Fehler beim Importieren des SonarQube Visual Studio Code Coverage
- 16. Code-Coverage-Test in Visual Studio 2010? Wie?
- 17. Code Coverage für statische Bibliothek (.lib) Visual Studio
- 18. Beliebiges .net Code Coverage Plugin für Visual Studio 2010?
- 19. Code Coverage Tool für Visual Studio TDD Projekt
- 20. Projektvorlage für Visual Studio 2015
- 21. Visual Studio 2015 .jar Referenz
- 22. Visual Studio 2015 reagiert nicht
- 23. Visual Studio 2015 stürzt ab
- 24. BIDS für Visual Studio 2015
- 25. Visual Studio 2008 falsche Quellzeile
- 26. LargeAddressAware Visual Studio 2015 C#
- 27. DataGridView in Visual Studio 2015
- 28. Visual Studio 2015 - Auto-Kollaps # Regionen und inaktiver Code
- 29. Visual Studio 2015 Code-Snippet mit signifikanten nachgestellten Leerzeichen
- 30. Visual Studio 2015 stürzt zeitweise
[mcve] würde helfen. Verwenden Sie Vorlagenfunktionen? – AndyG
Ich stimme zu. Keine Vorlagenfunktionen. – Jeff
Ist das Projekt x64 oder x86? Ich erinnere mich, dass es Probleme mit x64 gibt. – AndyG