Udostępnij za pośrednictwem


CA1030: Używaj zdarzeń wszędzie, gdzie jest to odpowiednie

Właściwości Wartość
Identyfikator reguły CA1030
Stanowisko Używaj zdarzeń, o ile to możliwe
Kategoria Projekt
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Nazwa metody zaczyna się od jednej z następujących:

  • Addon
  • Usuń
  • Ogień
  • Podnieść

Domyślnie ta reguła analizuje tylko metody widoczne zewnętrznie, ale jest to możliwe do skonfigurowania.

Opis reguły

Ta reguła wykrywa metody o nazwach, które normalnie mogą być używane dla zdarzeń. Zdarzenia są zgodne ze wzorcem projektu Obserwator lub Publish-Subscribe; są one używane, gdy zmiana stanu w jednym obiekcie musi być komunikowana z innymi obiektami. Jeśli metoda zostanie wywołana w odpowiedzi na jasno zdefiniowaną zmianę stanu, metoda powinna zostać wywołana przez procedurę obsługi zdarzeń. Obiekty, które wywołują tę metodę, powinny wywoływać zdarzenia, a nie bezpośrednio metodę.

Niektóre typowe przykłady zdarzeń można znaleźć w aplikacjach interfejsu użytkownika, w których akcja użytkownika, taka jak kliknięcie przycisku powoduje wykonanie segmentu kodu. Model zdarzeń platformy .NET nie jest ograniczony do interfejsów użytkownika. Powinien być używany w dowolnym miejscu, w którym należy przekazać zmiany stanu do co najmniej jednego obiektu.

Jak naprawić naruszenia

Jeśli metoda jest wywoływana, gdy zmieni się stan obiektu, rozważ zmianę projektu w celu użycia modelu zdarzeń platformy .NET.

Kiedy pomijać ostrzeżenia

Pomiń ostrzeżenie z tej reguły, jeśli metoda nie działa z modelem zdarzeń platformy .NET.

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 CA1030
// The code that's violating the rule is on this line.
#pragma warning restore CA1030

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Tę opcję można skonfigurować tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (Projekt), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal