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.
Recommended
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
.
Uwaga
Następujące reguły są całkowicie opcjonalne i nie są domyślnie włączone w trybach Default
, Recommended
lub All
:
- MSTEST0015: Metoda testowa nie powinna być ignorowana
- MSTEST0019: Preferuj metody TestInitialize nad konstruktorami
- MSTEST0020: Preferuj konstruktory zamiast metod TestInitialize
- MSTEST0021: Preferuj metodę Dispose zamiast metody TestCleanup
- MSTEST0022: Preferuj metod TestCleanup nad metodami Dispose
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