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 |
---|---|
Podpis metody zawiera parametr, który nie jest używany w treści metody. |
|
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. |
|
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. |
Dzięki temu oryginalny błąd jest trudny do wykrycia i debugowania. |
|
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. |
|
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. |
Typ wartości deklaruje jawny, statyczny konstruktor.Aby naprawić naruszenie tej zasady, zainicjuj wszystkie dane statyczne, gdy jest on zadeklarowany i usuń konstruktor statyczny. |
|
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. |
|
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. |
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. |
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. |
|
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. |
|
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. |
|
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. |
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. |
Typ publiczny implementuje operator równości, ale nie zastępuje metody Object.Equals. |
|
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. |
|
Typ implementuje równości lub operator nierówności i nie implementuje przeciwnych operatora. |
|
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. |
|
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. |
|
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. |
|
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. |
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. |
|
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. |
|
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. |
Typ ma pole, które jest oznaczony atrybutem System.Runtime.Serialization.OptionalFieldAttribute i typu nie zapewnia obsługi metod deserializacji zdarzeń. |
|
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. |
|
Format argumentu przekazanego do System.String.Format nie zawiera element formatu, który odpowiada argumentowi każdego obiektu, lub odwrotnie. |
|
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. |