Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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.