Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Property | Value |
|---|---|
| Identyfikator reguły | MSTEST0073 |
| Tytuł | Preferuj stałą dla klucza zasobu "[ResourceLock]" |
| Kategoria | Usage |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone | Tak |
| domyślna ciężkość | Informacje |
| wprowadzone w wersji | 4.4.0 |
| Czy istnieje poprawka kodu | Nie |
Przyczyna
Atrybut [ResourceLock] przekazuje swój klucz zasobu jako surowy literał ciągu zamiast odwoływać się do współdzielonej stałej.
Opis reguły
[ResourceLock] Dopasuje testy według dokładnej równości ciągu z uwzględnieniem wielkości liter klucza zasobu. Użycie zwykłego literału łańcuchowego jest zawodne: literówka powoduje powstanie innego klucza, więc kolidujące testy nie są już wykonywane sekwencyjnie i po cichu wchodzą ze sobą w wyścig zamiast zakończyć się błędem kompilacji. Odwoływanie się do współdzielonej stałej, takiej jak składowa WellKnownResources lub własna const, sprawia, że literówki stają się błędami kompilacji, i pozwala kompilatorowi dopilnować, aby każdy test współzawodniczący o ten sam zasób używał tego samego klucza.
[ResourceLock("database")] // Violation: bare string literal.
[TestMethod]
public void ReadsSharedSchema() { }
Jak naprawić naruszenia
Odwołaj się do składowej WellKnownResources, aby uzyskać globalny stan procesu, lub zadeklaruj i odwołaj się do własnej składowej const string.
private const string Database = "database";
[ResourceLock(Database)]
[TestMethod]
public void ReadsSharedSchema() { }
Kiedy pomijać ostrzeżenia
Można bezpiecznie zignorować to ostrzeżenie, jeśli celowo używasz literałowego klucza zasobu i masz pewność, że żaden inny test w aseblacji nie musi synchronizować się względem tego samego zasobu.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable MSTEST0073
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0073
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0073.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.