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 | Preferisce una costante per la chiave di 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 (anteprima) |
| È presente una correzione del codice | No |
Importante
ResourceLockAttribute è pianificato per MSTest 4.4 ed è disponibile solo nelle build di anteprima fino al rilascio di MSTest 4.4.0.
Cause
Un [ResourceLock] attributo passa la chiave di risorsa come valore letterale stringa bare anziché 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. Un valore letterale stringa bare non riesce all'apertura: un errore di digitazione genera una chiave diversa, quindi i test in conflitto non vengono più serializzati e non vengono più serializzati e invisibile all'utente invece di non riuscire con un errore di compilazione. Facendo riferimento a una costante condivisa, ad esempio un WellKnownResources membro o il proprio const, viene generato un errore di compilazione e consente al compilatore di imporre che ogni test che si contenda sulla 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.