Udostępnij za pośrednictwem


Analiza kodu MSTest

Reguły analizy MSTest ("MSTESTxxxx") sprawdzają kod C# lub Visual Basic pod kątem zabezpieczeń, wydajności, projektowania i innych problemów.

Napiwek

Jeśli używasz programu Visual Studio, wiele reguł analizatora ma skojarzone poprawki kodu, które można zastosować, aby rozwiązać ten problem. Poprawki kodu są wyświetlane w menu ikony żarówki.

Reguły są zorganizowane w kategorie, takie jak użycie wydajności...

Począwszy od MSTest.TestFramework 3.7, pakiet NuGet MSTest.Analyzers jest zależnością frameworka. Aby używać wcześniejszych wersji, należy użyć metapakietu MSTest lub dodać odwołanie do pakietu MSTest.Analyzers.

MSTestAnalysisMode

Począwszy od MSTest 3.8, właściwość MSBuild o nazwie MSTestAnalysisMode jest dostępna do określenia, które analizatory są aktywowane w jakim priorytetem.

Napiwek

Aby sprawdzić, które reguły są włączone i z jaką surowością dla każdego trybu, możesz przejść do pakietu interesującej cię wersji w pamięci podręcznej NuGet, zlokalizować katalog globalconfigs i otworzyć plik .globalconfig odpowiadający trybowi analizy. Aby uzyskać więcej informacji na temat znajdowania katalogu pamięci podręcznej NuGet, zobacz Zarządzanie globalnymi pakietami, pamięcią podręczną i folderami tymczasowymi. Z tego katalogu znajdź katalog mstest.analyzers, a następnie wersję (3.8 lub nowszą), a następnie globalconfigs. Alternatywnie możesz pobrać pakiet NuGet interesującej wersji z nuget.org i wyświetlić go w Eksploratorze pakietów NuGet (aplikacja systemu Windows) lub wyświetlić bezpośrednio w wersji aplikacji internetowej Eksploratora pakietów NuGet.

Dostępne wartości dla tej właściwości:

None

Ta wartość ustawia wszystkie analizatory na stopień ważności none, wyłączając je wszystkie. Następnie można włączyć poszczególne analizatory przy użyciu plików .editorconfig lub .globalconfig.

Default

To ustawienie jest zgodne z domyślnym udokumentowanymi zachowaniami każdej reguły.

  • Reguły, które są domyślnie włączone, będą używać swojej domyślnej ważności.
  • Reguły, które są domyślnie wyłączone, będą używać poziomu ważności none.

Uwaga

Reguły, które są domyślnie włączone jako ostrzeżenia, to naruszenia, które są oczekiwane, że spowodują problemy w czasie wykonywania.

Jest to tryb, który oczekujemy, że większość deweloperów będzie używać. Reguły, które są domyślnie włączone z ważnością "Informacja" (suggestion), są eskalowane do ostrzeżeń. Ponadto niektóre reguły mogą być przekształcone na błędy zarówno w trybach Recommended, jak i All. Na przykład MSTEST0003: Metody testowe powinny mieć prawidłowy układ, jest podnoszony do rangi błędu w trybach Recommended i All.

All

Ten tryb jest bardziej agresywny niż Recommended. Wszystkie reguły są włączone jako ostrzeżenia. Jak wspomniano w trybie Recommended, niektóre reguły mogą zostać uznane za błędy zarówno w trybach Recommended, jak i All. Na przykład MSTEST0003: Metody testowe powinny mieć prawidłowy układ, jest podnoszony do rangi błędu w trybach Recommended i All.

Kategorie

Reguły projektowania

reguły projektowania ułatwiają tworzenie i konserwowanie zestawów testów, które są zgodne z odpowiednimi rozwiązaniami projektowymi i dobrymi rozwiązaniami.

Reguły wydajności

Zasady wydajności wspierają testy wysokowydajnościowe.

Reguły tłumienia

Reguły tłumienia wspierają tłumienie diagnostyki z innych reguł.

Reguły użycia

reguły użycia wspomagają prawidłowe używanie MSTest.

MSTESTEXP

Kilka interfejsów API narzędzia MSTest ma przypisany atrybut ExperimentalAttribute. Ten atrybut wskazuje, że interfejs API jest eksperymentalny i może zostać usunięty lub zmieniony w przyszłych wersjach biblioteki MSTest. Atrybut służy do identyfikowania interfejsów API, które nie są jeszcze stabilne i mogą nie być odpowiednie do użytku produkcyjnego.

Diagnostyka MSTESTEXP powiadamia o użyciu eksperymentalnego interfejsu API w kodzie. Aby pominąć tę diagnostykę za pomocą kodu SuppressMessageAttribute, dodaj następujący fragment do projektu:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("MSTESTEXP", "Justification")]

Alternatywnie możesz wyłączyć tę diagnostykę za pomocą dyrektywy preprocesora, poprzez dodanie następującego kodu do projektu:

#pragma warning disable MSTESTEXP
        // API that is causing the warning.
#pragma warning restore MSTESTEXP