Udostępnij za pośrednictwem


Wykorzystanie — Ostrzeżenia

Ostrzeżenia użycia obsługuje właściwy sposób użycia programu.NET Framework.

W tej sekcji

Reguła

Opis

CA1801: Przejrzyj nieużywane parametry

Podpis metody zawiera parametr, który nie jest używany w treści metody.

CA1806: Nie ignoruj wyników metod

Nowy obiekt jest tworzony, ale nigdy nie używany; lub metoda, która tworzy i zwraca nowy ciąg jest wywoływana, ale nowy ciąg nigdy nie jest używany; lub metody COM lub P/Invoke zwracają HRESULT lub kod błędu, który nigdy nie jest używany.

CA1816: Wywołaj poprawnie GC.SuppressFinalize

Metoda, która jest implementacją Dispose, nie wywołuje GC.SuppressFinalize; lub metoda, która nie jest implementacja Dispose wywołuje GC.SuppressFinalize; lub metoda wywołuje GC.SuppressFinalize i przekazuje na coś innego niż "this" (Me w języku Visual Basic).

CA2200: Należy zgłosić ponownie, aby zachować szczegóły stosu

Wyjątek jest ponownie Wyrzucony wyjątek jest jawnie określona w instrukcji throw.Jeśli ponownie wyjątek określając wyjątek w instrukcji throw, lista wywołania metody między oryginalnej metody, który wygenerował wyjątek i bieżącej metody jest tracone.

CA2201: Nie wywołuj zastrzeżonych typów wyjątków

Dzięki temu oryginalny błąd jest trudny do wykrycia i debugowania.

CA2202: Nie należy usuwać obiektów wiele razy

Implementacja metody zawiera ścieżki kodu, które powodują wielokrotne wywołania do System.IDisposable.Dispose lub równoważnika (na przykład użyciu metody Close() na niektórych typach) dla tego samego obiektu.

CA2204: Literały powinny być napisane poprawnie

Ciąg literału w treści metody zawiera jeden lub więcej wyrazów, które nie są rozpoznawane przez bibliotekę sprawdzania pisowni Microsoft.

CA2205: Użyj zarządzanych odpowiedników interfejsu API Win32

Wywołanie platformy metoda jest zdefiniowana i metody z równoważne funkcje istnieje w Biblioteka klas.NET Framework.

CA2207: Inicjowanie pól statycznych typu wartościowego

Typ wartości deklaruje jawny, statyczny konstruktor.Aby naprawić naruszenie tej zasady, zainicjuj wszystkie dane statyczne, gdy jest on zadeklarowany i usuń konstruktor statyczny.

CA2208: Utwórz poprawne wystąpienia wyjątków argumentów

Wywołanie jest zrobione do domyślnego (bezparametrowego) konstruktora typu wyjątku, który jest lub pochodzi od ArgumentException lub niepoprawny ciąg argumentu jest przekazywany do sparametryzowana konstruktora typu wyjątku lub pochodzi od ArgumentException.

CA2211: Niestałe pola nie powinny być widoczne

Pola statyczne, które nie są ani stałe, ani tylko do odczytu, nie obsługują wielowątkowości.Dostęp do takiego pola musi być starannie kontrolowany i wymaga zaawansowanych technik programowania dla synchronizacji dostępu do obiektu klasy.

CA2212: Nie należy oznaczać obsługiwanych składników znacznikiem WebMethod

Metoda w typie, która dziedziczy z System.EnterpriseServices.ServicedComponent jest oznaczony atrybutem System.Web.Services.WebMethodAttribute.Ponieważ WebMethodAttribute i metoda ServicedComponent mają sprzeczne zachowanie i wymagania dotyczące przepływu kontekstu i transakcji, zachowanie metod będzie niepoprawne w niektórych scenariuszach.

CA2213: Pola usuwalne powinny zostać usunięte

Typ, który implementuje System.IDisposable deklaruje pola, które są typu, który także implementują IDisposable.Metoda Dispose pola nie jest wywoływana przez metodę Dispose typu deklarującego.

CA2214: Nie należy wywoływać nadpisywalnych metod w konstruktorach

Kiedy konstruktor wywołuje metodę wirtualną, jest możliwe, że konstruktor wystąpienia, które wywołuje metodę, nie został wykonany.

CA2215: Metody Dispose powinny wywoływać operację usuwania klasy podstawowej

Jeśli typ dziedziczy z typu usuwalnego, musi on wywołać metodę Dispose typu podstawowego z własną metodę Dispose.

CA2216: Typy usuwalne powinny deklarować finalizator

Typ, który implementuje System.IDisposable i zawiera pola, które sugerują, wykorzystania zasobów niezarządzanego, nie implementuje finalizatorów opisane przez Object.Finalize.

CA2217: Nie oznaczaj wyliczeń za pomocą FlagsAttribute

Wyliczenie widocznych zewnętrznie jest oznaczony atrybutem FlagsAttribute i ma jedną lub więcej wartości, które nie są uprawnienia dwóch lub kombinacji zdefiniowane wartości na wyliczenie.

CA2218: Zastąp GetHashCode przy zastępowaniu Equals

GetHashCode zwraca wartość opartą na bieżącym wystąpieniu, które jest odpowiednie dla algorytmów wyznaczających wartości skrótu i struktur danych, takich jak tabela skrótów.Dwa obiekty, które są tego samego typu i są równe muszą zwrócić tę samą wartość skrótu.

CA2219: Nie zgłaszaj wyjątków w klauzulach wyjątków

Kiedy wyjątek jest zgłaszany w klauzuli "finally" lub "fault", nowy wyjątek ukrywa aktywny wyjątek.Gdy jest wyjątek jest zgłaszany w klauzuli "filter", środowisko uruchomieniowe dyskretnie przechwytuje wyjątek.Dzięki temu oryginalny błąd jest trudny do wykrycia i debugowania.

CA2220: Finalizatory powinny wywoływać finalizatory klasy podstawowej

Finalizacja musi być powielana w hierarchii dziedziczenia.Aby to zagwarantować, typy muszą wywołać metody Finalize swoich klas podstawowych w ich własnej metodzie Finalize.

CA2221: Finalizatory powinny być chronione

Finalizatory należy użyć modyfikatora dostępu "family".

CA2222: Nie zmniejszaj widoczności dziedziczonego elementu członkowskiego

Nie należy zmieniać modyfikatora dostępu dla dziedziczonych elementów członkowskich.Zmiana dziedziczonego elementu członkowskiego na prywatny nie uniemożliwia wywołującym uzyskania dostępu do implementacji metody klasy podstawowej.

CA2223: Elementy członkowskie powinny różnić się bardziej, niż typem zwracanym

Chociaż CLR pozwala na używanie typów zwracanych do rozróżnienia między inaczej identycznymi członkami, funkcja ta nie jest w specyfikacji języka wspólnego (CLS), ani nie jest wspólną cechą języków programowania .NET.

CA2224: Zastąp metodę equals przeciążając operator equals

Typ publiczny implementuje operator równości, ale nie zastępuje metody Object.Equals.

CA2225: Operator overloads ma nazwanych zastępców

Wykryto przeciążony operator i nie znaleziono alternatywnej, oczekiwanie nazwanej metody.Alternatywne nazwanego elementu członkowskiego udostępnia taką samą funkcjonalność jak operator, a jest świadczone dla deweloperów, którzy program w językach, których nie obsługuje przeciążonych operatorów.

CA2226: Operatory powinny być przeciążane symetrycznie

Typ implementuje równości lub operator nierówności i nie implementuje przeciwnych operatora.

CA2227: Właściwości kolekcji powinny być tylko do odczytu

Właściwości zapisywalnej kolekcji pozwala użytkownikowi zastąpić kolekcję inną kolekcją.Właściwość tylko do odczytu uniemożliwia zastępowanie kolekcji, ale nadal umożliwia ustawienie poszczególnych członków.

CA2228: Nie dostarczaj niepublikowanych formatów zasobów

Pliki zasobów, które zostały zbudowane przy użyciu wersji wstępnych systemu.NET Framework może nie być możliwe do wykorzystania przez obsługiwanych wersji systemu.NET Framework.

CA2229: Należy zaimplementować konstruktory serializacji

Aby naprawić naruszenie tej zasady, należy zaimplementować konstruktor serializacji.Dla zamkniętej klasy, należy ustawić konstruktor prywatnym; w przeciwnym razie powinien być chroniony.

CA2230: Użyj parametrów dla zmiennych argumentów

Typ publiczny lub chroniony zawiera metodę publiczną lub chronioną, która używa wywoływania VarArgs, zamiast słowa kluczowego params.

CA2231: Przeciąż operator equals przy zastępowaniu ValueType.Equals

Typ wartości zastępuje metodę Object.Equals, ale nie implementuje operatora równości.

CA2232: Oznacz punkty wpisu formularzy systemu Windows za pomocą STAThread

STAThreadAttribute wskazuje, że model wątkowości COM dla aplikacji jest jednowątkowym apartamentem.Atrybut ten musi być obecny w punkcie wejścia każdej aplikacji korzystającej z Windows Forms; Jeśli zostanie pominięty, składniki systemu Windows mogą nie działać poprawnie.

CA2233: Operacje nie powinny prowadzić do przepełnienia

Operacje arytmetyczne nie powinna odbywać się bez sprawdzania pierwszy operandów, aby upewnić się, że wynik operacji nie jest spoza zakresu możliwych wartości dla typów danych zaangażowane.

CA2234: Przekaż obiekty System.Uri zamiast ciągów

Wykonano wywołanie do metody, która ma parametr typu ciąg, którego nazwa zawiera "uri", "URI", "urn", "URN", "url" lub "URL". Deklarujący typ metody zawiera odpowiadającą przeciążoną metodę, która ma parametr System.Uri.

CA2235: Należy oznaczyć wszystkie nieserializowane pola

Pola wystąpienia typu, który nie może być serializowany jest zadeklarowany w typie, który jest możliwy do serializacji.

CA2236: Wywołanie metod klasy podstawowej typu ISerializable

Aby naprawić naruszenie tej zasady, należy wywołać metodę GetObjectData typu podstawowego lub konstruktor serializacji z odpowiadającej metody typu pochodnego lub konstruktora.

CA2237: Należy oznaczyć typ ISerializable atrybutem SerializableAttribute

Być uznawane przez aparat plików wykonywalnych języka jako możliwy do serializacji, typy musi oznaczone atrybutem SerializableAttribute, nawet jeśli typ korzysta rutynowych serializacji niestandardowej poprzez implementację interfejsu ISerializable.

CA2238: Należy poprawnie zaimplementować metody serializacji

Metoda, która obsługuje zdarzenie szeregowania nie ma poprawnej sygnatury zwracanego typu lub widoczności.

CA2239: Dostarcz metody deserializacji pól opcjonalnych

Typ ma pole, które jest oznaczony atrybutem System.Runtime.Serialization.OptionalFieldAttribute i typu nie zapewnia obsługi metod deserializacji zdarzeń.

CA2240: Należy poprawnie zaimplementować ISerializable

Napraw naruszenie tej zasady, zrobić metoda GetObjectData widoczne i NotOverridable i upewnij się, że wszystkie pola wystąpienia są uwzględniane w procesie serializacji lub jawnie oznaczone atrybutem NonSerializedAttribute.

CA2241: Dostarcz poprawne argumenty do metod formatowania

Format argumentu przekazanego do System.String.Format nie zawiera element formatu, który odpowiada argumentowi każdego obiektu, lub odwrotnie.

CA2242: Testuj poprawnie pod kątem NaN

To wyrażenie sprawdza czy wartość to Single.Nan lub Double.Nan.Użyj Single.IsNan(Single) lub Double.IsNan(Double) do testowania wartości.

CA2243: Literały ciągu atrybutu powinny być analizowane poprawnie

Parametr literał ciągu atrybutu nie analizuje poprawnie dla adresu URL, identyfikatora GUID lub wersji.