Udostępnij za pośrednictwem


Pokrycie kodu — wyszukiwanie błędów

Narzędzie analizy pokrycia kodu w programie Visual Studio zbiera dane dotyczące zestawów macierzystych i zarządzanych (pliki dll i exe).Jednak, w niektórych przypadkach, okno Wyniki pokrycia kodu, wyświetla błąd podobny do "Wygenerowano puste wyniki: …" Istnieje kilka możliwych przyczyn tego zdarzenia.Ten temat jest przeznaczony do dostarczenia pomocy w rozwiązaniu tych problemów.

Co powinno się wyświetlić

Jeśli wybierzesz polecenie Analizuj pokrycie kodu w menu Test i jeżeli kompilacja oraz testy zostaną wykonane pomyślnie, powinna wyświetlić się lista wyników, w oknie Pokrycie kodu.Aby wyświetlić szczegółowe informacje należy rozwinąć elementy.

Kod zapotrzebowania wyniki z kolorowanie

Aby uzyskać więcej informacji, zobacz Za pomocą Code Coverage, aby określić, jak dużo kodu jest badany.

Możliwe przyczyny wyświetlania braku wyników

JJ159523.collapse_all(pl-pl,VS.110).gifNie zostały wykonane żadne testy

  • Analiza
    Sprawdź w oknie danych wyjściowych.Z listy rozwijalnej Pokaż dane wyjściowe z wybierz Testy.Sprawdź, czy są zarejestrowane błędy lub ostrzeżenia.

  • Wyjaśnienie
    Analiza pokrycia kodu odbywa się podczas wykonywania testów.Zawiera tylko te zestawy, które są ładowane do pamięci podczas wykonywania testów.Jeśli żadne testy nie są wykonywane, narzędzie pokrycia kodu nie ma nic do zgłoszenia.

  • Rozwiązanie
    W Eksploratorze testu wybierz Uruchom wszystkie aby sprawdzić, czy testy zostaną wykonane pomyślnie.Rozwiąż wszelkie błędy przed użyciem narzędzia Analiza pokrycia kodu.

JJ159523.collapse_all(pl-pl,VS.110).gifpliki pdb (symbol) są niedostępne

  • Analiza
    Otwórz docelowy folder kompilacji (zazwyczaj bin\debug) i sprawdź, czy dla każdego zestawu istnieje plik pdb, w tym samym katalogu co plik dll lub exe.

  • Wyjaśnienie
    Silnik pokrycia kodu wymaga tego, że każdy zestaw ma swój skojarzony plik pdb dostępny podczas przebiegu testowego.Jeśli określony zestaw nie ma pliku pdb, nie zostanie on przeanalizowany.

    Plik pdb musi zostać wygenerowany z tej samej kompilacji co pliki dll i exe.

  • Rozwiązanie
    Upewnij się, że ustawienia kompilacji generują plik pdb.Jeśli pliki pdb nie są aktualizowane gdy projekt jest kompilowany, należy otworzyć właściwości projektu, zaznaczyć stronę Kompilacja wybrać Zaawansowane oraz sprawdzić Debug Info.

    Jeśli pliki pdb i dll lub exe znajdują się w różnych miejscach, należy skopiować plik pdb do tego samego katalogu.Można również skonfigurować silnik pokrycia kodu, aby wyszukiwał pliki pdb w innej lokalizacji.Aby uzyskać więcej informacji, zobacz Dostosowywanie analizy pokrycia kodu.

JJ159523.collapse_all(pl-pl,VS.110).gifZa pomocą instrumentowanego lub zoptymalizowanego pliku binarnego

  • Analiza
    Należy określić, czy plik binarny przeszedł przez dowolną formę procesu zaawansowanej optymalizacji, takiego jak Profilowana optymalizacja, lub czy został instrumentowany przez narzędzia profilowania, takie jak vsinstr.exe lub vsperfmon.exe.

  • Wyjaśnienie
    Jeśli zestaw został już instrumentowany lub zoptymalizowany przez inne narzędzie do profilowania, zestaw jest pominięty z analizy pokrycia kodu.

    Nie można wykonać analizy pokrycia kodu na takich zestawach.

  • Rozwiązanie
    Wyłącz optymalizację i użyj nowej kompilacji.

JJ159523.collapse_all(pl-pl,VS.110).gifKod nie jest zarządzany (.NET) lub nie jest kodem macierzystym (C++)

  • Analiza
    Sprawdź, czy niektóre testy są uruchomione na kodzie zarządzanym lub kodzie C++.

  • Wyjaśnienie
    Analiza pokrycia kodu w programie Visual Studio jest dostępna tylko dla zarządzanego i macierzystego kodu (C++).Jeżeli pracujesz na narzędziach innych firm, część kodu lub cały kod może być wykonywany na innej platformie.

  • Rozwiązanie
    Brak dostępnych.

JJ159523.collapse_all(pl-pl,VS.110).gifZestaw został zainstalowany przez NGen

  • Analiza
    Upewnij się, że zestaw nie jest ładowany z pamięci podręcznej obrazu macierzystego.

  • Wyjaśnienie
    Ze względu na wydajność, zestawy obrazu macierzystego nie są analizowane.Aby uzyskać więcej informacji, zobacz Ngen.exe (Native Image Generator).

  • Rozwiązanie
    Należy użyć wersji MSIL zestawu.Nie przetwarzaj go z NGen.

JJ159523.collapse_all(pl-pl,VS.110).gifNiestandardowy plik runsettings o złej składni.

  • Analiza
    Jeśli używasz pliku niestandardowego runsettings, może zawierać błąd składni.

    Wynikiem tego jest całkowity brak uruchomienia pokrycia kodu.Okno pokrycia kodu nie zostanie otwarte po zakończeniu przebiegu testowego lub wyświetli stare wyniki.

  • Wyjaśnienie
    Można uruchomić testy jednostkowe z pliku niestandardowego runsettings, aby skonfigurować opcje pokrycia kodu.Opcje umożliwiają uwzględnianie lub wykluczanie plików.Aby uzyskać więcej informacji, zobacz Dostosowywanie analizy pokrycia kodu.

  • Rozwiązanie
    Istnieją dwa typy możliwych błędów:

  • Błąd XML

    Otwórz plik runsettings w edytorze XML programu Visual Studio.Poszukaj oznak błędów.

  • Błąd w wyrażeniu regularnym

    Każdy ciąg znaków w pliku, jest wyrażeniem regularnym.Przejrzyj każdy z nich w poszukiwaniu błędów, a w szczególności zwróć uwagę na:

    • Niedopasowane nawiasy (...) lub nawiasy bez poprzedzającego znaku ucieczki \(...\).Jeśli chcesz dopasować nawiasy w ciągu wyszukiwania, musisz dodać przed nimi znak ucieczki.Na przykład, aby dopasować funkcję, należy użyć: .*MyFunction\(double\)

    • Gwiazdka lub plus na początku wyrażenia.Aby dopasować dowolny ciąg znaków, należy użyć kropkę poprzedzającą gwiazdkę: .*

JJ159523.collapse_all(pl-pl,VS.110).gifNiestandardowy plik runsettings z niepoprawnymi wykluczeniami

  • Analiza
    Korzystając z pliku niestandardowego runsettings upewnij się, że zawiera on twój zestaw.

  • Wyjaśnienie
    Można uruchomić testy jednostkowe z pliku niestandardowego runsettings, aby skonfigurować opcje pokrycia kodu.Opcje umożliwiają uwzględnianie lub wykluczanie plików.Aby uzyskać więcej informacji, zobacz Dostosowywanie analizy pokrycia kodu.

  • Rozwiązanie
    Usuń wszystkie węzły Include z pliku runsettings, a następnie usuń wszystkie węzły Exclude.Jeśli to rozwiąże problem, umieść je z powrotem w etapach.

    Upewnij się, że węzeł DataCollectors określa Pokrycie kodu.Porównaj je z przykładem w Dostosowywanie analizy pokrycia kodu.

Niektóry kod jest zawsze wyświetlany jako niepokryty

JJ159523.collapse_all(pl-pl,VS.110).gifKod inicjujący w macierzystych bibliotekach DLL jest wykonywany przed instrumentacją

  • Analiza
    W statycznie połączonym kodzie macierzystym, część funkcji inicjowania DllMain i kod, który wywołuje, jest czasami przedstawiany jako kod niepokryty, pomimo tego, że kod został wykonany.

  • Wyjaśnienie
    Narzędzie pokrycia kodu działa poprzez wstawienie instrumentacji do zestawu tuż przed uruchomieniem aplikacji.W każdym zestawie załadowanym wcześniej, kod inicjowania w DllMain wykonuje się, jak tylko zestaw zostanie załadowany i przed uruchomieniem aplikacji.Ten kod zostanie wyświetlony jako niepokryty.

    Zwykle dotyczy to statycznie załadowanych zestawów.

  • Rozwiązanie
    Brak.

Zobacz też

Inne zasoby

Za pomocą Code Coverage, aby określić, jak dużo kodu jest badany