MSTEST0073: preferire una costante per la chiave di risorsa '[ResourceLock]'

Proprietà Value
ID regola MSTEST0073
Titolo Preferire una costante per la chiave della risorsa '[ResourceLock]'
Categoria Utilizzo
La modifica è dirompente o non dirompente Non rompente
Abilitato per impostazione predefinita Sì
Gravità predefinita Informazioni
introdotta nella versione 4.4.0
È presente una correzione del codice No

Cause

Un attributo [ResourceLock] fornisce la chiave della risorsa come un letterale di stringa semplice invece di fare riferimento a una costante condivisa.

Descrizione della regola

[ResourceLock] corrisponde ai test in base all'uguaglianza esatta di stringhe con distinzione tra maiuscole e minuscole della chiave di risorsa. Una stringa letterale semplice fallisce in modo permissivo: un errore di digitazione produce una chiave diversa, quindi i test in conflitto non vengono più serializzati e vanno silenziosamente in race condition invece di bloccarsi con un errore di build. Fare riferimento a una costante condivisa, ad esempio un membro WellKnownResources o una propria costante const, fa sì che gli errori di battitura vengano rilevati come errori di compilazione e consente al compilatore di garantire che ogni test che accede alla stessa risorsa usi la stessa chiave.

[ResourceLock("database")] // Violation: bare string literal.
[TestMethod]
public void ReadsSharedSchema() { }

Come correggere le violazioni

Fare riferimento a un WellKnownResources membro per lo stato globale del processo o dichiarare e fare riferimento al proprio const string.

private const string Database = "database";

[ResourceLock(Database)]
[TestMethod]
public void ReadsSharedSchema() { }

Quando eliminare gli avvisi

È possibile eliminare questo avviso in modo sicuro se si usa intenzionalmente una chiave di risorsa letterale e non si è certi che nessun altro test nell'assembly debba coordinarsi sulla stessa risorsa.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable MSTEST0073
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0073

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0073.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche