Poradce při potížích s pokrytím kódu
Analytické nástroje pokrytí kódu v aplikaci Visual Studio shromažďují data pro nativní a spravované sestavení (soubory DLL nebo exe).Avšak, v některých případech, okno Výsledky pokrytí kódu zobrazí chybu, jako je "Vygenerované prázdné výsledky:...". Existuje několik možných důvodů, proč k tomu může dojít.Toto téma je určeno na pomoc při řešení těchto problémů.
Co byste měli vidět
Pokud vyberete příkaz Analyzovat pokrytí kódu v nabídce Test, a pokud sestavení a testy proběhnou úspěšně, potom by se měl zobrazit seznam výsledků v okně Pokrytí kódu.Pro zobrazení podrobností je možno položky rozbalit.
Další informace naleznete v tématu Je právě testován pomocí kódu disponibility zjistit, jak daleko kódu.
Možné příčiny nezobrazení výsledků
Nebyly provedeny žádné testy
Analýza
Zkontrolujte výstupní okno.V rozevírací seznamu Zobrazit výstup z zvolte Testy.Zjistěte, zda tady nejsou zaznamenané nějaká varování a chyby.Vysvětlení
Analýza pokrytí kódu se provádí v době spuštění testů.Zahrnuje pouze sestavení, které jsou načteny do paměti při spuštění testů.Jestliže nebyl proveden žádný z testů, pak není nic pro reportování o pokrytí kódu.Rozhodnutí
V průzkumníku testu vyberte Spustit všechny pro ověření toho, že testy se spustily úspěšně.Před použitím Analyzovat pokrytí kódu opravíte jakékoliv chyby.
Nejsou k dispozici soubory .pdb (symbol)
Analýza
Otevřete cílovou složku kompilace (obvykle bin\debug) a ověřte, zda existuje pro každé sestavení soubor .pdb ve stejném adresáři jako soubor .dll nebo .exe.Vysvětlení
Nástroj pokrytí kódu vyžaduje, aby všechna sestavení měla v průběhu testu přístupný svůj přidružený soubor .pdb.Pokud nemá konkrétní sestavení přístupný žádný soubor .pdb, nebude analyzováno.Soubor .pdb je nutné vygenerovat ze stejného sestavení, jakou jsou soubory .dll nebo .exe.
Rozhodnutí
Ujistěte se, že nastavení sestavení generuje soubor .pdb.Pokud při vytváření projektu, nejsou aktualizovány soubory .pdb, potom otevřete vlastnosti projektu, vyberte stránku Sestavení, zvolte Upřesnit a kontrolujte Informace o ladění.Pokud jsou soubory .pdb a .dll nebo .exe na různých místech, zkopírujte soubor .pdb do stejného adresáře.Je také možné nakonfigurovat nástroj pokrytí kódu pro to, aby hledal soubory .pdb v jiném umístění.Další informace naleznete v tématu Přizpůsobení analýzy pokrytí kódu.
Použití instrumentovaného nebo optimalizovaného binárního souboru
Analýza
Zjistěte, zda binární soubor podstoupil jakoukoliv formu pokročilé optimalizace, jako je profilovaná řízená optimalizace nebo byl instrumentován pomocí profilovacího nástroje, jako je vsinstr.exe nebo vsperfmon.exe.Vysvětlení
Pokud již bylo sestavení instrumentované nebo optimalizované pomocí jiného nástroje profilování, pak je sestavení vynecháno z analýzy pokrytí kódu.Analýza pokrytí kódu na takovýchto sestavení nemůže být provedena.
Rozhodnutí
Vypněte optimalizaci a použijte nové sestavení.
Kód není spravovaný (.NET) nebo nativní (C++) kód
Analýza
Ověřte, zda jsou testy spuštěny na spravovaném kódu nebo na kódu jazyka C++.Vysvětlení
Analýza pokrytí kódu v aplikaci Visual Studio je dostupná pouze pro spravovaný a nativní (C++) kód.Při práci s nástroji třetích stran, se může provést některý nebo všechen kód na jiné platformě.Rozhodnutí
Není k dispozici.
Sestavení bylo nainstalováno pomocí NGen
Analýza
Ověřte, že sestavení není načteno z mezipaměti nativní bitové kopie.Vysvětlení
Z důvodů výkonu nejsou sestavení nativní bitové kopie analyzovány.Další informace naleznete v tématu Ngen.exe (Native Image Generator).Rozhodnutí
Použijte MSIL verzi sestavení.Nezpracovávejte jej s NGen.
Chybná syntaxe vlastního souboru .runsettings
Analýza
Pokud používáte vlastní soubor .runsettings, tak může obsahovat chybu syntaxe.To vyústí v to, že se vůbec nespustí pokrytí kódu.Buď se okno pokrytí kódu na konci testu vůbec neotevře, nebo zobrazí staré výsledky.
Vysvětlení
Můžete spustit unitové testy s vlastním .runsettings pro nakonfigurování možností pokrytí kódu.Možnosti umožňují zahrnout nebo vyloučit soubory.Další informace naleznete v tématu Přizpůsobení analýzy pokrytí kódu.Rozhodnutí
Existují dva typy možných chyb:
Chyba XML
Otevřete soubor .runsettings v XML editoru aplikace Visual Studio.Hledejte označení chyb.
Chyba regulárního výrazu
Každý řetězec v souboru je regulární výraz.Zkontrolujte všechny, zda v nich nejsou chyby, a hledejte zejména:
Nesouhlasící závorky (...) nebo nepřeskočené závorky \(...)\).Pokud chcete najít v řetězci závorky, musíte je přeskočit.Chcete-li například najít funkci, použijte: .*MyFunction\(double\)
Hvězdička nebo plus na začátku výrazu.Pro vyhledání libovolného řetězce znaků použijte tečkou následovanou hvězdičkou: .*
Nesprávné vyloučení ve vlastním souboru .runsettings
Analýza
Pokud používáte vlastní soubor .runsettings, ujistěte se, že obsahuje vaše sestavení.Vysvětlení
Můžete spustit unitové testy s vlastním .runsettings pro nakonfigurování možností pokrytí kódu.Možnosti umožňují zahrnout nebo vyloučit soubory.Další informace naleznete v tématu Přizpůsobení analýzy pokrytí kódu.Rozhodnutí
Odeberte všechny uzly Include ze souboru .runsettings a potom odeberte všechny uzly Exclude.Pokud to vyřeší daný problém, vracejte je zpět ve fázích.Zkontrolujte, že uzel DataCollectors určuje pokrytí kódu.Porovnání s příkladem v Přizpůsobení analýzy pokrytí kódu.
Některý kód je vždy zobrazen jako nepokrytý
Ještě před instrumentací je provedena inicializace kódu v nativní knihovně DLL
Analýza
Ve staticky propojeném nativním kódu, část inicializační funkce DllMain a kód, který se volá, je někdy zobrazen jako nepokrytý, i přesto, že daný kód proveden byl.Vysvětlení
Nástroj pokrytí kódu funguje pomocí vložení instrumentace do sestavení těsně před zahájením spuštění aplikace.V sestavení načteném tentokrát před, se inicializační kód v DllMain provede, co nejdříve po načtení sestavení, a před spuštěním aplikace.Tento kód se zobrazí jako pokrytý.Obvykle to platí pro staticky načtená sestavení.
Rozhodnutí
Žádný
Viz také
Další zdroje
Je právě testován pomocí kódu disponibility zjistit, jak daleko kódu