MSTest-Codeanalyse
Regeln der MSTest-Analyse (MSTESTxxxx) analysieren Ihren C#- oder Visual Basic-Code hinsichtlich Sicherheit, Leistung, Design und anderen Problemen.
Tipp
Wenn Sie Visual Studio verwenden, verfügen viele Analysetoolregeln über zugehörige Codekorrekturen, die Sie zur Problembehebung anwenden können. Codekorrekturen werden im Fehlerbehebungsmenü (Glühbirnensymbol) angezeigt.
Die Regeln sind in Kategorien unterteilt, z. B. Leistung und Nutzung.
Ab MSTest.TestFramework 3.7 ist das NuGet-Paket "MSTest.Analyzers NuGet" eine Abhängigkeit des Frameworks. Für frühere Versionen müssen Sie MSTest
Metapackage verwenden oder einen Paketverweis für MSTest.Analyzers
explizit hinzufügen.
MSTestAnalysisMode
Ab MSTest 3.8 ist eine MSBuild-Eigenschaft mit dem Namen MSTestAnalysisMode
verfügbar, um zu bestimmen, welche Analysegeräte zu welchem Schweregrad aktiviert sind.
Tipp
Um zu sehen, welche Regeln für jeden Modus bei welcher Schwere aktiviert sind, können Sie im NuGet-Cache zum Paket der interessierenden Version navigieren, das globalconfigs
-Verzeichnis suchen und die .globalconfig
-Datei öffnen, die dem Analysemodus entspricht.
Weitere Informationen zum Suchen des NuGet-Cacheverzeichnisses finden Sie unter Verwalten der globalen Pakete, des Caches und der temporären Ordner. Finden Sie in diesem Verzeichnis zuerst das mstest.analyzers
-Verzeichnis, dann die Version (3.8 und höher), und schließlich globalconfigs
.
Alternativ können Sie das NuGet-Paket der interessanten Version von nuget.org
herunterladen und im NuGet-Paket-Explorer (Windows-App) anzeigen oder direkt in der Web App-Version des NuGet-Paket-Explorersanzeigen.
Die verfügbaren Werte für diese Eigenschaft:
None
Dieser Wert legt alle Analysatoren auf none
Schweregrad fest und deaktiviert alle. Anschließend können Sie einzelne Analyzer mithilfe von .editorconfig
oder .globalconfig
Dateien aktivieren.
Default
Diese Einstellung folgt dem standarddokumentierten Verhalten für jede Regel.
- Standardmäßig aktivierte Regeln verwenden den Standardschweregrad.
- Standardmäßig deaktivierte Regeln verwenden
none
Schweregrad.
Hinweis
Regeln, die standardmäßig als Warnungen aktiviert sind, sind Verstöße, die voraussichtlich zur Laufzeit Probleme verursachen.
Recommended
Dies ist der Modus, den die meisten Entwickler verwenden. Regeln, die standardmäßig mit dem Schweregrad Info (suggestion
) aktiviert sind, werden zu Warnungen eskaliert. Außerdem können bestimmte Regeln sowohl im Modus Recommended
als auch im Modus All
zu Fehlern führen. Zum Beispiel: MSTEST0003: Testmethoden müssen ein gültiges Layout haben wird in den Modi Recommended
und All
zu einem Fehler eskaliert.
All
Dieser Modus ist aggressiver als Recommended
. Alle Regeln werden als Warnungen aktiviert. Wie bereits für den Recommended
-Modus erläutert, können bestimmte Regeln sowohl im Modus Recommended
als auch im Modus All
Fehler auslösen. Zum Beispiel: MSTEST0003: Testmethoden müssen ein gültiges Layout haben wird in den Modi Recommended
und All
zu einem Fehler eskaliert.
Hinweis
Die folgenden Regeln sind vollständig optional und werden in den Modi Default
, Recommended
oder All
nicht aktiviert.
- MSTEST0015: Die Testmethode sollte nicht ignoriert werden
- MSTEST0019: Bevorzugen Sie TestInitialize-Methoden gegenüber Konstruktoren
- MSTEST0020: Konstruktoren gegenüber TestInitialize-Methoden bevorzugen
- MSTEST0021: Dispose gegenüber TestCleanup-Methoden bevorzugen
- MSTEST0022: Bevorzugen Sie TestCleanup-Methoden gegenüber Dispose-Methoden
Kategorien
Entwurfsregeln
Die Designregeln helfen Ihnen dabei, Testsuiten zu erstellen und zu verwalten, die dem richtigen Design und bewährten Methoden entsprechen.
Leistungsregeln
Leistungsregeln unterstützen Hochleistungstests.
Unterdrückungsregeln
Unterdrückungsregeln unterstützen das Unterdrücken der Diagnose aus anderen Regeln.
Nutzungsregeln
Verwendungsregeln unterstützen die ordnungsgemäße Verwendung von MSTest.
MSTESTEXP
Mehrere APIs von MSTest sind mit dem Attribut ExperimentalAttribute ausgezeichnet. Dieses Attribut zeigt an, dass die API experimentell ist und in zukünftigen Versionen von MSTest entfernt oder geändert werden kann. Das Attribut wird verwendet, um APIs zu identifizieren, die noch nicht stabil sind und möglicherweise nicht für die Produktionsverwendung geeignet sind.
Die MSTESTEXP-Diagnose warnt Sie vor der Verwendung einer experimentellen API in Ihrem Code. Um diese Diagnose mit SuppressMessageAttribute
zu unterdrücken, fügen Sie Ihrem Projekt den folgenden Code hinzu:
using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("MSTESTEXP", "Justification")]
Alternativ können Sie diese Diagnose mit einer Präprozessoranweisung unterdrücken, indem Sie ihrem Projekt den folgenden Code hinzufügen:
#pragma warning disable MSTESTEXP
// API that is causing the warning.
#pragma warning restore MSTESTEXP