Sdílet prostřednictvím


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.

Kód disponibility výsledky s barvy

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ů

JJ159523.collapse_all(cs-cz,VS.110).gifNebyly 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.

JJ159523.collapse_all(cs-cz,VS.110).gifNejsou 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.

JJ159523.collapse_all(cs-cz,VS.110).gifPouž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í.

JJ159523.collapse_all(cs-cz,VS.110).gifKó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.

JJ159523.collapse_all(cs-cz,VS.110).gifSestavení 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.

JJ159523.collapse_all(cs-cz,VS.110).gifChybná 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: .*

JJ159523.collapse_all(cs-cz,VS.110).gifNesprá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ý

JJ159523.collapse_all(cs-cz,VS.110).gifJeš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