Analisi codice MSTest
Le regole di analisi MSTest ("MSTESTxxxx") ispezionano il codice C# o Visual Basic per individuare problemi di sicurezza, prestazioni, progettazione e di altro tipo.
Suggerimento
Se si usa Visual Studio, molte regole dell'analizzatore hanno associate correzioni del codice che è possibile applicare per risolvere il problema. Le correzioni del codice sono visualizzate nel menu dell'icona a forma di lampadina.
Le regole sono organizzate in categorie come l'utilizzo delle prestazioni...
A partire da MSTest.TestFramework 3.7, il pacchetto NuGet MSTest.Analyzers è una dipendenza del framework. Per le versioni precedenti, è necessario usare il metapacchetto MSTest
o aggiungere un riferimento al pacchetto MSTest.Analyzers
esplicitamente.
MSTestAnalysisMode
A partire da MSTest 3.8, è disponibile una proprietà MSBuild denominata MSTestAnalysisMode
per determinare quali analizzatori sono abilitati in base alla gravità.
Suggerimento
Per vedere quali regole sono abilitate in base alla gravità per ogni modalità, è possibile passare al pacchetto della versione di interesse nella cache NuGet, individuare la directory globalconfigs
e aprire il file .globalconfig
corrispondente alla modalità di analisi.
Per altre informazioni sulla ricerca della directory della cache NuGet, vedere Gestione dei pacchetti globali, della cache e delle cartelle temporanee. Da tale directory individuare mstest.analyzers
directory, quindi la versione (3.8 e successive), quindi globalconfigs
.
In alternativa, è possibile scaricare il pacchetto NuGet della versione di interesse da nuget.org
e visualizzarlo in Esplora pacchetti NuGet (app di Windows) o visualizzarlo direttamente nella versione dell'app Web di Esplora pacchetti NuGet.
I valori disponibili per questa proprietà:
None
Questo valore imposta tutti gli analizzatori su none
gravità, disabilitandoli tutti. È quindi possibile abilitare singoli analizzatori usando .editorconfig
o .globalconfig
file.
Default
Questa impostazione segue il comportamento documentato predefinito per ogni regola.
- Le regole abilitate per impostazione predefinita useranno la gravità predefinita.
- Le regole che sono disabilitate per impostazione predefinita utilizzeranno la gravità
none
.
Nota
Le regole abilitate per impostazione predefinita come avvisi sono violazioni che dovrebbero causare problemi in fase di esecuzione.
Recommended
Questa è la modalità che ci aspettiamo che la maggior parte degli sviluppatori usi. Le regole abilitate per impostazione predefinita con gravità Info (suggestion
) vengono elevate ad avvertimenti. Inoltre, alcune regole potrebbero diventare errori nelle modalità Recommended
e All
. Ad esempio, MSTEST0003: i metodi di test devono avere un layout valido. è considerato un errore nelle modalità Recommended
e All
.
All
Questa modalità è più aggressiva di Recommended
. Tutte le regole vengono abilitate come avvisi. Come indicato per la modalità Recommended
, alcune regole potrebbero essere classificate come errori nelle modalità Recommended
e All
. Ad esempio, MSTEST0003: i metodi di test devono avere un layout valido. è considerato un errore nelle modalità Recommended
e All
.
Nota
Le seguenti regole sono completamente facoltative e non sono abilitate nelle modalità Default
, Recommended
o All
.
- MSTEST0015: il metodo di test non deve essere ignorato
- MSTEST0019: preferire i metodi TestInitialize rispetto ai costruttori
- MSTEST0020: preferisce i costruttori rispetto ai metodi TestInitialize
- MSTEST0021: preferire i metodi Dispose piuttosto che TestCleanup
- MSTEST0022: Preferire TestCleanup rispetto ai metodi Dispose
Categorie
Regole di progettazione
Le regole di design aiutano a creare e mantenere gruppi di test che aderiscono a una progettazione corretta e alle buone pratiche.
Regole di prestazioni
Le regole di performance supportano i test ad alte prestazioni.
Regole di soppressione
Le regole di soppressione supportano la soppressione della diagnostica da altre regole.
Regole di utilizzo
Regole di utilizzo supportano l'uso corretto di MSTest.
MSTESTEXP
Diverse API di MSTest sono decorate con il ExperimentalAttribute. Questo attributo indica che l'API è sperimentale e può essere rimossa o modificata nelle versioni future di MSTest. L'attributo viene usato per identificare le API che non sono ancora stabili e potrebbero non essere adatte per l'uso in produzione.
La diagnostica MSTESTEXP avvisa l'utente di usare un'API sperimentale nel codice. Per sopprimere questa diagnostica con il SuppressMessageAttribute
, aggiungere il seguente codice al progetto:
using System.Diagnostics.CodeAnalysis;
[assembly: SuppressMessage("MSTESTEXP", "Justification")]
In alternativa, è possibile eliminare questa diagnostica con direttiva del preprocessore aggiungendo il codice seguente al progetto:
#pragma warning disable MSTESTEXP
// API that is causing the warning.
#pragma warning restore MSTESTEXP