Udostępnij za pośrednictwem


Kod analizy ostrzeżenia dla kodu zarządzanego przez CheckId

Poniższa lista zawiera ostrzeżenia analizy kodu dla kodu zarządzanego przez identyfikator CheckId ostrzeżenia.

Ostrzeżenia

CheckId

Ostrzeżenie

Opis

CA1000

CA1000: Elementy statyczne nie są deklarowane w typach podstawowych

Po wywołaniu statycznego elementu członkowskiego typu generycznego, argument typu musi zostać określony dla typu.Po wywołaniu wystąpienia generycznego elementu członkowskiego, który nie obsługuje wnioskowania, argument typu musi zostać określony dla elementu członkowskiego.W tych dwóch przypadkach składnia określająca argument typu jest różna i łatwo o pomyłkę.

CA1001

CA1001: Typy, które własne pola jednorazowe powinna być jednorazowe

Klasa deklaruje i implementuje pole wystąpienia typu System.IDisposable, ale nie implementuje interfejsu IDisposable.Klasa, która deklaruje pole IDisposable pośrednio posiada niezarządzany zasób i powinna implementować interfejs IDisposable.

CA1002

CA1002: Nie będą uwidaczniać rodzajowy list

System.Collections.Generic.list<(Z <(T>)>) jest kolekcją generyczną, zaprojektowaną z myślą o wydajności, nie dziedziczeniu.Dlatego też element List nie zawiera wirtualnych elementów członkowskich.Zamiast powyższych powinny zostać zastosowane kolekcje generyczne, które zostały zaprojektowane do obsługi dziedziczenia.

CA1003

CA1003: Użyj wystąpień programu obsługi zdarzeń rodzajowy

Typ zawiera pełnomocnika, który zwraca wartość typu void, którego podpis zawiera dwa parametry (pierwszy typu obiekt i drugi typu, który można przypisać do EventArgs) i zawierający zestaw odwołujący się do Microsoft .NET Framework 2.0.

CA1004

CA1004: Metody rodzajowe powinny dostarczyć parametr typu

Wnioskowanie to ustalenie argumentu typu metody generycznej poprzez typ argumentu przekazanego do metody, zamiast użycia jawnej specyfikacji argumentu typu.Aby włączyć wnioskowanie, podpis parametru metody generycznej musi zawierać parametr, który jest tego samego typu co parametr typu dla metody.W tym przypadku argument typu nie musi zostać określony.W przypadku użycia wnioskowania dla wszystkich parametrów typu, składnia wywoływania generycznych i nie-generycznych metod wystąpień jest identyczna; upraszcza to użycie metod ogólnych.

CA1005

CA1005: Uniknąć nadmiernego parametrów na typy rodzajowe

Im więcej parametrów typu zawiera typ generyczny, tym trudniej jest poznać i zapamiętać co reprezentuje każdy parametr typu.Zwykle jest jasne w przypadku jednego parametru typu, jak w List<T>, oraz w niektórych przypadkach zawierających dwa parametry typu, jak słownik <TKey, TValue>.Jednakże, jeśli istnieją więcej niż dwa parametry typu, poziom trudności staje się zbyt wysoki dla większości użytkowników.

CA1006

CA1006: Nie zagnieżdżaj typy rodzajowe w Członkowskim podpisów

Argument typu zagnieżdżonego jest argumentem typu, który jest również typem generycznym.Aby wywołać element członkowski, którego podpis zawiera argument typu zagnieżdżonego, użytkownik musi zainicjować wystąpienie pierwszego typu generycznego i przekazać go do konstruktora drugiego typu generycznego.Wymagana procedura oraz składnia jest złożona i powinno się jej unikać.

CA1007

CA1007: Użyj generyczne, gdzie stosowne

Metoda widoczna z zewnątrz zawiera parametr przekazany przez odwołanie do typu System.Object.Użycie metody generycznej umożliwia przekazanie wszystkich typów podlegających ograniczeniom do metody, bez uprzedniego rzutowania typu do typu parametru przekazanego przez odwołanie.

CA1008

CA1008: Wyliczenia powinny mieć wartość zero

Wartość domyślna niezainicjowanego typu wyliczeniowego, podobnie jak inne typy wartości, wynosi zero.Wyliczanie przypisane bez flag powinno definiować element członkowski przy użyciu wartości zero tak, że wartość domyślna jest prawidłową wartością wyliczenia.Jeśli wyliczenie, które posiada zastosowany atrybut FlagsAttribute definiuje element członkowski o wartości zero, powinno być nazwane "Brak", aby wskazać, że żadne wartości nie zostały ustawione w wyliczeniu.

CA1009

CA1009: Zadeklarować poprawnie obsługi zdarzeń

Metody obsługi zdarzeń przyjmują dwa parametry.Pierwszy jest typu System.Object i nosi nazwę "nadawca".Jest to obiekt, który wywołał zdarzenie.Drugi parametr jest typu System.EventArgs i nosi nazwę "e".To dane, które są skojarzone ze zdarzeniem.Metody obsługi zdarzeń nie powinny zwracać wartości; w języku programowania C# to jest wskazywane przez zwrócony typ void.

CA1010

CA1010: Kolekcji należy implementować interfejs rodzajowy

Aby poszerzyć użyteczność kolekcji, zaimplementuj jeden z interfejsów kolekcji generycznej.Następnie kolekcja może zostać użyta, aby wypełnić typy generyczne kolekcji.

CA1011

CA1011: Należy rozważyć, przekazując typów podstawowych jako parametry

Jeśli typ podstawowy jest określony jako parametr w deklaracji metody, dowolny typ, który pochodzi od typu podstawowego może zostać przekazany jako odpowiadający argument do metody.Jeśli dodatkowa funkcjonalność, która jest dostarczana przez typ parametru pochodnego nie jest wymagana, użycie typu podstawowego umożliwia szersze wykorzystanie metody.

CA1012

CA1012: Typy abstrakcyjne nie powinny mieć konstruktorów

Konstruktory dla typów abstrakcyjnych mogą być wywoływane tylko przez typy pochodne.Ponieważ publiczne konstruktory tworzą wystąpienia typu, a nie można utworzyć wystąpienia typu abstrakcyjnego, publiczny konstruktor typu abstrakcyjnego został niepoprawnie zaprojektowany.

CA1013

CA1013: Przeciążenie operator równości na przeciążenie Dodawanie i odejmowanie

Typ publiczny lub chroniony implementuje operator dodawanie lub odejmowanie bez stosowania implementacji operatora równości.

CA1014

CA1014: Znak zespołów o CLSCompliantAttribute

The Common Language Specification (CLS) definiuje ograniczenia nazw, typów danych i reguł z którymi muszą być zgodne zestawy , jeśli zostaną użyte w językach programowania.Zasada dobrego projektowania nakazuje, aby wszystkie zestawy jawnie wskazywały zgodność ze specyfikacją CLS używając CLSCompliantAttribute.Jeśli ten atrybut nie jest obecny w zestawie oznacza to, że zestaw jest niezgodny.

CA1016

CA1016: Znak zespołów o AssemblyVersionAttribute

.NET Framework używa numeru wersji, aby jednoznacznie zidentyfikować zestaw i powiązać z typami w zestawach o silnej nazwie.Numer wersji jest używany razem z zasadami wersji i wydawcy.Domyślnie aplikacje są uruchamiane tylko z wersji zestawu, z którego zostały zbudowane.

CA1017

CA1017: Znak zespołów o ComVisibleAttribute

ComVisibleAttribute określa w jaki sposób klienci COM otrzymują dostęp do kodu zarządzanego.Zasada dobrego projektowania nakazuje, aby zestawy jawnie wskazywały widoczność COM.Widoczność COM można ustawić dla całego zestawu a następnie zastąpić dla poszczególnych typów i elementów członkowskich typu.Jeśli ten atrybut jest nieobecny, zawartość zestawu jest widoczna dla klientów COM.

CA1018

CA1018: Atrybutów znacznika z element AttributeUsageAttribute

Podczas definiowania atrybutu niestandardowego należy go oznaczyć przy użyciu elementu AttributeUsageAttribute, aby wskazać, w którym miejscu kodu źródłowego można zastosować niestandardowy atrybut.Znaczenie i zamierzone użycie atrybutu określi jego prawidłowe lokalizacje w kodzie.

CA1019

CA1019: Definiowanie akcesorów dla argumentów atrybutu.

Atrybuty mogą definiować obowiązkowe argumenty, które muszą zostać określone, aby zastosować atrybut do obiektu docelowego.Znane są również jako argumenty pozycyjne, ponieważ są one dostarczane do konstruktorów atrybutu jako parametry pozycyjne.Dla każdego obowiązkowego argumentu atrybut powinien również dostarczyć odpowiadającą właściwość tylko do odczytu, dzięki której można pobrać wartość argumentu w czasie wykonywania.Atrybuty mogą także definiować argumenty opcjonalne, które są również znane jako argumenty nazwane.Te argumenty są dostarczane do konstruktorów atrybutu poprzez nazwę i powinny posiadać odpowiadającą właściwość umożliwiającą odczyt i zapis.

CA1020

CA1020: Unikać nazw z kilku typów

Należy się upewnić, że każda z przestrzeni nazw posiada organizację logiczną oraz że istnieje uzasadniony powód, aby umieszczać typy w słabo wypełnionych przestrzeniach nazw.

CA1021

CA1021: Uniknąć parametrów

Przekazywanie typów przez odwołanie (używając out lub ref) wymaga doświadczenia ze wskaźnikami, rozumienia różnicy między typami wartości i typami odwołania oraz obsługi metod z wieloma wartościami zwracanymi.Ponadto różnica między parametrami out i ref nie jest powszechnie zrozumiała.

CA1023

CA1023: Indeksatory nie powinny być wielowymiarowe

Indeksatory (właściwości indeksowane) powinny używać pojedynczego indeksu.Indeksatory wielowymiarowe mogą znacznie zmniejszyć użyteczność biblioteki.

CA1024

CA1024: Użyj właściwości, gdzie stosowne

Metody publiczne lub chronione posiadają nazwę zaczynającą się od "Get", nie posiadają parametrów i zwracają wartość, która nie jest tablicą.Metoda może być dobrym kandydatem na właściwość.

CA1025

CA1025: Zamień powtarzające się argumenty params tablicy

Używaj tablicy parametrów zamiast powtarzających się argumentów, gdy znana jest dokładna liczba argumentów oraz gdy argumenty zmiennych są tego samego typu lub mogą być przekazane jako ten typ.

CA1026

CA1026: Nie należy używać domyślnych parametrów

Metody, które używają parametrów domyślnych są dozwolone w ramach CLS; jednakże CLS umożliwia kompilatorom ignorowanie wartości, które są przypisane do tych parametrów.Aby zapewnić odpowiednie zachowanie w językach programowania, metody, które używają parametrów domyślnych powinny zostać zastąpione przez metody przeciążone, które dostarczają parametry domyślne.

CA1027

CA1027: Znak wyliczenia z FlagsAttribute

Wyliczenie to typ wartości, który definiuje zestaw powiązanych, nazwanych stałych.Zastosuj FlagsAttribute do wyliczenia, gdy jego stałe nazwane mogą zostać sensownie połączone.

CA1028

CA1028: Enum składowania powinna być Int32

Wyliczenie to typ wartości, który definiuje zestaw powiązanych stałych nazwanych.Domyślnie typ danych System.Int32 jest używany do przechowywania wartości stałej.Mimo że można zmienić ten typ podstawowy, nie jest to wymagane ani zalecane dla większości scenariuszy.

CA1030

CA1030: Użyj zdarzenia, gdzie stosowne

Ta reguła wykrywa metody posiadające nazwy, które normalnie byłyby używane dla zdarzeń.Jeśli metoda jest wywoływana w odpowiedzi na jasno określoną zmianę stanu, metoda ta powinna zostać wywołana przez program obsługi zdarzeń.Obiekty, które wywołują tą metodę powinny wywoływać zdarzenia zamiast wywołać metodę bezpośrednio.

CA1031

CA1031: Nie przechwytywać wyjątku ogólnych typów

Ogólne wyjątki nie powinny być przechwytywane.Przechwytuj wyjątek bardziej precyzyjny lub zgłoś ponownie ogólny wyjątek jako ostatnią instrukcję w bloku catch.

CA1032

CA1032: Implementować konstruktory wyjątek standardowy

Niepowodzenie podczas dostarczenia pełnego zestawu konstruktorów może utrudnić poprawną obsługę wyjątków.

CA1033

CA1033: Interfejs metody powinny być wpłacone przez podrzędne typy

Niezapieczętowany typ widoczny z zewnątrz zapewnia jawną implementację metody interfejsu publicznego i nie dostarcza alternatywnej metody widocznej z zewnątrz o tej samej nazwie.

CA1034

CA1034: Zagnieżdżone typy nie powinny być widoczne

Typ zagnieżdżony to typ, który jest zadeklarowany wewnątrz zakresu innego typu.Typy zagnieżdżone są przydatne w przypadku hermetyzacji szczegółów implementacji prywatnej zawierającego typu.Używane w tym celu typy zagnieżdżone nie powinny być widoczne z zewnątrz.

CA1035

CA1035: Implementacje kolekcji ICollection zdecydowanie wpisano członków

Ta reguła wymaga implementacji ICollection w celu dostarczenia silnie typizowanych elementów członkowskich tak, aby użytkownicy nie musieli rzutować argumentów na typ Object w przypadku używania funkcjonalności dostarczonej przez interfejs.Ta reguła zakłada, że typ, który implementuje ICollection robi to tak, aby zarządzać kolekcją wystąpień typów mocniejszych niż Object.

CA1036

CA1036: Zastąpić metody na porównywalnych rodzajów

Typ publiczny lub chroniony implementuje interfejs System.IComparable.Nie zastępuje on metody Object.Equals ani nie przeciąża specyficznego dla języka operatora równości, nierówności, mniejsze lub większe niż.

CA1038

CA1038: Moduły wyliczające powinien być silnie wpisywany

Ta reguła wymaga implementacji IEnumerator w celu dostarczenia silnie typizowanej wersji właściwości Current, tak aby użytkownicy nie musieli rzutować wartości zwróconej na typ silny w przypadku używania funkcjonalności dostarczonej przez interfejs.

CA1039

CA1039: Wykazy mają jednoznacznie określone typy

Ta reguła wymaga implementacji IList w celu dostarczenia silnie typizowanych elementów członkowskich tak, aby użytkownicy nie musieli rzutować argumentów na typ System.Object w przypadku używania funkcjonalności dostarczonej przez interfejs.

CA1040

CA1040: Uniknąć pustych interfejsów

Interfejsy definiują elementy członkowskie, które zapewniają zachowanie lub użycie kontraktu.Funkcjonalność opisana przez interfejs może zostać przyjęta przez dowolny typ, niezależnie od tego, gdzie ten typ się pojawia w hierarchii dziedziczenia.Typ implementuje interfejs dostarczając implementacje dla elementów członkowskich interfejsu.Pusty interfejs nie definiuje żadnych elementów członkowskich; dlatego też nie definiuje kontraktu, który można zaimplementować.

CA1041

CA1041: Dostarczyć wiadomości ObsoleteAttribute

Typ lub element członkowski jest oznaczony za pomocą atrybutu System.ObsoleteAttribute, który nie posiada określonej właściwości ObsoleteAttribute.Message.Podczas kompilowania typu lub elementu członkowskiego, który jest oznaczony za pomocą ObsoleteAttribute, wyświetlana jest właściwość Wiadomość atrybutu.Dostarcza to informacje użytkownika o przestarzałym typie lub elemencie członkowskim.

CA1043

CA1043: Użyj Całka lub ciąg argumentu dla indeksatory

Indeksatory (właściwości indeksowane) powinny używać dla indeksu typów całkowitych lub ciągu.Typy te są zwykle używane do indeksowania struktur danych i zwiększają one użyteczność biblioteki.Użycie typu Object powinno zostać ograniczone do przypadków, w których nie może zostać określony typ całkowity lub ciąg w czasie projektowania.

CA1044

CA1044: Właściwości nie powinny być tylko do zapisu

Chociaż posiadanie właściwości tylko do odczytu jest dopuszczalne i często konieczne, wytyczne projektowania zabraniają używania właściwości tylko do zapisu.Jest tak, ponieważ umożliwiając użytkownikowi ustawienie wartości, a następnie uniemożliwianie użytkownikowi przeglądanie tej wartości nie zapewnia żadnych zabezpieczeń.Tak, więc bez dostępu do odczytu nie można przeglądać stanu obiektów udostępnionych, co ogranicza ich przydatność.

CA1045

CA1045: Nie przechodzi przez odniesienie typów

Przekazywanie typów przez odwołanie (używając out lub ref) wymaga doświadczenia ze wskaźnikami, rozumienia różnicy między typami wartości i typami odwołania oraz obsługi metod, które mają wiele wartości zwracanych.Architekci biblioteki, którzy tworzą dla wszystkich nie powinni oczekiwać od użytkowników dobrej znajomości parametrów out lub ref.

CA1046

CA1046: Nie obciążając operator równości na typy odwołań

Dla typów odwołań domyślna implementacja operatora równości jest prawie zawsze poprawna.Domyślnie dwa odwołania są równe tylko wtedy, gdy wskazują ten sam obiekt.

CA1047

CA1047: Nie są deklarowane chronionych członków w zamkniętych typów

Chronione elementy członkowskie są zadeklarowane w typach tak, aby typy dziedziczące posiadały dostęp oraz mogły zastąpić element członkowski.Z definicji po typach zapieczętowanych nie może dziedziczyć, co oznacza, że nie można wywołać metody chronionej na typach zapieczętowanych.

CA1048

CA1048: Nie są deklarowane Członkowie wirtualnego w zamkniętych typów

Metody wirtualne są zadeklarowane w typach tak, aby typy dziedziczące mogły zmieniać implementację metod wirtualnych.Z definicji po typie zapieczętowanym nie można dziedziczyć.Powoduje to, że metoda wirtualna w typie zapieczętowanym jest całkowicie nieprzydatna.

CA1049

CA1049: Typy, które macierzystych środków własnych powinna być jednorazowe

Typy, które przydzielają zasoby niezarządzane powinny implementować interfejs IDisposable umożliwiając metodom wywołującym zwalnianie tych zasobów na żądanie i skrócenie czasu istnienia obiektów, które zawierają te zasoby.

CA1050

CA1050: Zadeklarować typów w obszarach nazw

Typy są zadeklarowane w obszarach nazw, aby zapobiec kolizjom nazw oraz jest to sposób organizowania typów powiązanych w hierarchii obiektów.

CA1051

CA1051: Nie są deklarowane widoczne instancji pola

Głównym zastosowaniem pola powinno być to, co szczegółowo opisuje implementacja.Pola powinny być prywatne lub wewnętrzne i powinny być dostępne przy użyciu właściwości.

CA1052

CA1052: Powinna być zaplombowana typy statycznej posiadacza

Typ publiczny lub chroniony zawiera tylko statyczne elementy członkowskie i nie jest zadeklarowany za pomocą modyfikatora sealed(C# Reference) (NotInheritable).Typ, po którym nie będzie dziedziczenia powinien być oznakowany przy użyciu modyfikatora sealed, aby zapobiec jego użyciu jako typu podstawowego.

CA1053

CA1053: Typów statycznych posiadacz nie powinny mieć konstruktorów

Typ publiczny lub publiczny zagnieżdżony deklaruje tylko statyczne elementy członkowskie i ma publiczny lub chroniony konstruktor domyślny.Konstruktor jest zbędny, ponieważ wywołanie statycznego elementu członkowskiego nie wymaga wystąpienia tego typu.Przeciążenie typu ciąg powinno wywoływać, dla bezpieczeństwa, przeciążenie jednolitego identyfikatora zasobów (URI) przy użyciu argumentu typu ciąg.

CA1054

CA1054: Parametry URI nie powinny być ciągi

Jeśli metoda pobiera reprezentację ciągu identyfikatora URI, powinno zostać dostarczone odpowiadające przeciążenie pobierające wystąpienie klasy URI, które dostarcza te usługi w bezpieczny sposób.

CA1055

CA1055: URI zwracać wartości nie powinny być ciągi

Reguła ta zakłada, że metoda zwraca identyfikator URI.Reprezentacja ciągu identyfikatora URI jest podatna na analizowanie i kodowanie błędów i może prowadzić do powstawania luk w zabezpieczeniach.Klasa System.Uri udostępnia te usługi w bezpieczny sposób.

CA1056

CA1056: Właściwości URI nie powinny być ciągi

Reguła ta zakłada, że właściwość reprezentuje identyfikator URI.Reprezentacja ciągu identyfikatora URI jest podatna na analizowanie i kodowanie błędów i może prowadzić do powstawania luk w zabezpieczeniach.Klasa System.Uri udostępnia te usługi w bezpieczny sposób.

CA1057

CA1057: Ciąg URI overloads wywołanie System.Uri overloads

Typ deklaruje przeciążenia metody, które różnią się jedynie zastąpieniem parametru typu ciąg parametrem System.Uri.Przeciążenie, która przyjmuje parametr typu ciąg nie wywołuje przeciążenia, które przyjmuje parametr identyfikatora URI.

CA1058

CA1058: Typy nie powinna obejmować niektórych typów podstawowych

Typ widoczny z zewnątrz rozszerza niektóre typy podstawowe.Użyj jednej z alternatyw.

CA1059

CA1059: Członków nie powinny wystawiać niektórych konkretnych typów

Konkretny typ jest typem, który posiada pełną implementację i dlatego też może zostać utworzone jego wystąpienie.Aby włączyć powszechne użycie elementu członkowskiego, zamień konkretny typ używając sugerowanego interfejsu.

CA1060

CA1060: Przenoszenie P/Invokes do klasy NativeMethods

Metody Platform Invocation, na przykład te, które zostały oznaczone za pomocą atrybutu System.Runtime.InteropServices.DllImportAttribute lub metody, które zostały zdefiniowane za pomocą słowa kluczowego Declare w Visual Basic, uzyskują dostęp do kodu niezarządzanego.Metody te powinny być klasy NativeMethods, SafeNativeMethods lub UnsafeNativeMethods.

CA1061

CA1061: Nie ukrywać metod klasy podstawowej

Metoda w typie podstawowym jest ukryta przez metodę o identycznej nazwie typu pochodnego, gdy sygnatura parametru metody pochodnej różni się tylko typami, które są bardziej słabo dziedziczone niż odpowiadające typy w sygnaturze parametru metody podstawowej.

CA1062

CA1062: Sprawdzanie poprawności argumentów metody publiczne

Wszystkie argumenty odwołania, które są przekazywane do metody widocznej z zewnątrz powinny być sprawdzane czy nie są wartości null.

CA1063

CA1063: Wdrożenie IDisposable poprawnie

Wszystkie typy IDisposable powinny poprawnie implementować wzorzec Dispose.

CA1064

CA1064: Wyjątki powinny być publiczne

Wyjątek wewnętrzny jest widoczny tylko wewnątrz własnego zakresu wewnętrznego.W przypadku wystąpienia wyjątku poza zakresem wewnętrznym, tylko wyjątek podstawowy może zostać użyty do przechwycenia tego wyjątku.Jeśli wyjątek wewnętrzny jest dziedziczony z T:System.Exception, T:System.SystemException lub T:System.ApplicationException kod zewnętrzny nie posiada wystarczających informacji, aby wiedzieć co należy zrobić z wyjątkiem.

CA1065

CA1065: Nie należy podnosić wyjątki w lokalizacjach nieoczekiwany

Metoda, od której nie oczekiwano zgłaszania wyjątków, zgłasza wyjątek.

CA1300

CA1300: Określ MessageBoxOptions

Aby poprawnie wyświetlić okno komunikatu dla kultur, które używają kolejności czytania od prawej do lewej, członkowie wyliczenia MessageBoxOptions RightAlign i RtlReading muszą być przekazani do metody Show.

CA1301

CA1301: Uniknąć duplikatów akceleratorów

Klucz dostępu, znany również jako akcelerator, umożliwia dostęp z klawiatury do formantu przy użyciu klawisza ALT.Kiedy wiele formantów ma zduplikowany klucz dostępu, zachowanie klucza dostępu nie jest dobrze zdefiniowane.

CA1302

CA1302: Czy nie zakodować ciągi określonych ustawień regionalnych

Wyliczenie System.Environment.SpecialFolder zawiera elementy, które odwołują się do folderów specjalnych systemu.Lokalizacje tych folderów mogą mieć różne wartości w różnych systemach operacyjnych; użytkownik może zmienić niektóre z tych lokalizacji; lokalizacje są zlokalizowane.Metoda Environment.GetFolderPath zwraca lokalizacje, które są skojarzone z wyliczeniem Environment.SpecialFolder, zlokalizowane i odpowiednie dla danego komputera.

CA1303

CA1303: Nie przechodzą literały jako parametry zlokalizowane

Metoda widoczna na zewnątrz przekazuje ciąg literału jako parametr do konstruktora lub metody w bibliotece klas .NET Framework i powinien być on możliwy do zlokalizowania.

CA1304

CA1304: Określ CultureInfo

Metoda lub konstruktor wywołuje członka, który ma przeciążenie, które akceptuje parametr System.Globalization.CultureInfo i metodę lub konstruktor, który nie wywołuje przeciążenia, które wymaga parametru CultureInfo.Kiedy obiekt CultureInfo lub System.IFormatProvider nie jest podany, domyślna wartość, która jest dostarczana przez członka przeciążonego, może nie mieć efektu, który pożądasz we wszystkich ustawieniach regionalnych.

CA1305

CA1305: Określ IFormatProvider

Metoda lub konstruktor wywołuje jeden lub więcej członków, które mają przeciążenia, które akceptują parametr System.IFormatProvider i metody lub konstruktora, który nie wywołuje przeciążenie, które przyjmuje parametr IFormatProvider.Kiedy obiekt System.Globalization.CultureInfo lub IFormatProvider nie jest podany, domyślna wartość, która jest dostarczana przez członka przeciążonego, może nie mieć efektu, który pożądasz we wszystkich ustawieniach regionalnych.

CA1306

CA1306: Ustaw ustawienia regionalne dla typów danych

Ustawienia regionalne określą specyficzne dla kultur elementy prezentacji dla danych, takie jak formatowanie, które jest używane dla wartości liczbowych, symbole walut i porządku sortowania.Podczas tworzenia elementu DataTable lub DataSet należy jawnie ustawić ustawienia regionalne.

CA1307

CA1307: Określ StringComparison

Operacja porównania ciągu używa przeciążenie metody, które nie ustawia parametru StringComparison.

CA1308

CA1308: Znormalizować ciągi na wielkie litery

Ciągi powinny znormalizowane na wielkie litery.Małe grupy znaków nie mogą wykonywać rund, gdy są one konwertowane na małe litery.

CA1309

CA1309: Użyj porządkowej StringComparison

Operacja porównania ciągu, która jest nielingwistyczna, nie ustawia parametru StringComparison na Ordinal lub OrdinalIgnoreCase.Poprzez jawne ustawienie parametru na StringComparison.Ordinal lub StringComparison.OrdinalIgnoreCase, kod często zyskuje na prędkości, staje się bardziej poprawny i staje się bardziej niezawodny.

CA1400

CA1400: Punkty wejścia P/Invoke powinien istnieć.

Metoda publiczna lub chroniona jest oznaczona za pomocą atrybutu System.Runtime.InteropServices.DllImportAttribute.Nie można zlokalizować biblioteki niezarządzanej lub metoda nie możne zostać dopasowana do funkcji w bibliotece.

CA1401

CA1401: P/Invokes nie powinny być widoczne

Metoda publiczna lub chroniona w typie publicznym ma atrybut System.Runtime.InteropServices.DllImportAttribute (również implementowany przez słowo kluczowe Declare w Visual Basic).Takie metody nie powinny być udostępniane.

CA1402

CA1402: Uniknąć przeciążenia w widocznych interfejsów COM

Gdy przeciążone metody są udostępniane klientom COM, tylko pierwsze przeciążenie metody zachowuje swoją nazwę.Kolejne przeciążenia są jednoznacznie nazywane przez dołączenie do nazwy znaku podkreślenia (_) i liczby całkowitej, ktora odpowiada kolejności deklaracji przeciążeń.

CA1403

CA1403: Automatyczny układ typów nie powinny być widoczne COM

Typ wartości widocznej dla modelu COM jest oznaczony za pomocą atrybutu System.Runtime.InteropServices.StructLayoutAttribute ustawionego na LayoutKind.Auto.Układ tych typów możne się zmieniać między wersjami .NET Framework, co spowoduje przerwanie klientów modelu COM, które oczekują określonego układu.

CA1404

CA1404: Wywołać GetLastError, niezwłocznie po wywołać/P

Wywołano metodę Marshal.GetLastWin32Error lub równoważną funkcję Win32 GetLastError, a bezpośrednio poprzedzające wywołanie nie jest do metody wywołania systemu operacyjnego.

CA1405

CA1405: Typów podstawowych widoczne typu COM powinny być widoczne COM

Typ widoczne dla modelu COM pochodzi od typu, który nie jest widoczny dla modelu COM.

CA1406

CA1406: Uniknąć Int64 argumenty dla klientów programu Visual Basic 6

Klienci Visual Basic 6 COM nie może uzyskać dostępu do 64-bitowych liczb całkowitych.

CA1407

CA1407: Uniknąć elementy statyczne w typach widoczne COM

Model COM nie obsługuje metod statycznych.

CA1408

CA1408: Nie należy używać AutoDual ClassInterfaceType

Typy, które korzystają z podwójnych interfejsów, umożliwiają klientom powiązanie z określonym interfejsem.Wszelkie zmiany w przyszłej wersji układ typu lub wszelkich typów podstawowych spowoduje przerwanie klientów COM powiązanych z interfejsem.Domyślnie jeśli atrybut ClassInterfaceAttribute nie jest określony, używany jest interfejs służący tylko do wysłania.

CA1409

CA1409: Widoczne typy Com powinna istnieć możliwość utworzenia

Typ odwołania, które jest specjalnie oznaczony jako widoczny dla modelu COM, zawiera publiczny konstruktor sparametryzowany, ale nie zawiera publicznego domyślnego (bezparametrowego) konstruktora.Klienci COM nie mogą stworzyć typu bez publicznego konstruktora domyślnego.

CA1410

CA1410: Powinna być dopasowywana metod rejestracji COM

Typ deklaruje metodę, która jest oznaczona pomocą atrybutu System.Runtime.InteropServices.ComRegisterFunctionAttribute, ale nie deklaruje metody oznaczonej za pomocą atrybutu System.Runtime.InteropServices.ComUnregisterFunctionAttribute lub odwrotnie.

CA1411

CA1411: Metody rejestracji COM nie powinny być widoczne

Metoda oznaczona za pomocą atrybutu System.Runtime.InteropServices.ComRegisterFunctionAttribute lub atrybut System.Runtime.InteropServices.ComUnregisterFunctionAttribute jest widoczna z zewnątrz.

CA1412

CA1412: Mark ComSource interfejsy jako interfejsu IDispatch

Typ jest oznaczony za pomocą atrybutu System.Runtime.InteropServices.ComSourceInterfacesAttribute i co najmniej jeden z określonych interfejsów nie jest oznaczony za pomocą atrybutu System.Runtime.InteropServices.InterfaceTypeAttribute ustawionego na ComInterfaceType.InterfaceIsIDispatch.

CA1413

CA1413: Uniknąć publiczno-pola typów wartości widoczne COM

Pola niepubliczne wystąpień typów wartości widocznych dla modelu COM są widoczne dla klientów COM.Przejrzyj zawartość pól pod kątem informacji, które nie powinien być udostępnione lub będą mieć niezamierzone efekty dla projektu lub zabezpieczeń.

CA1414

CA1414: Znak boolean P/Invoke argumenty z MarshalAs

Typ danych Boolean ma wiele reprezentacji w kodzie niezarządzanym.

CA1415

CA1415: Zadeklarować poprawnie P/Invokes

Ta reguła szuka deklaracji metod wywołania systemu operacyjnego, które celując w funkcje Win32, które mają wskaźnik do parametru struktury OVERLAPPED i odpowiadający parametr zarządzalny nie jest wskaźnikiem do struktury System.Threading.NativeOverlapped.

CA1500

CA1500: Zmienna nazwy powinny nie odpowiadają nazwom pól

Metoda wystąpienia deklaruje parametr lub zmienna lokalną, których nazwa pasuje do pola wystąpienia typu deklarującego, prowadząc do błędów.

CA1501

CA1501: Uniknąć nadmiernego dziedziczenie

Typ jest głęboki na więcej niż cztery poziomy w hierarchii dziedziczenia.Hierarchie typów głęboko zagnieżdżonych mogą być trudne do śledzenia, zrozumienia i utrzymania.

CA1502

CA1502: Unikać nadmiernej złożoności

Ta reguła mierzy liczbę liniowo niezależnych ścieżek przez metodę, która jest określona przez liczbę i złożoność rozgałęzień warunkowych.

CA1504

CA1504: Przegląd błąd nazwy pól

Nazwa pola wystąpienia zaczyna się od "s_" lub nazwa pola statycznego (Shared w języku Visual Basic) zaczyna się od "m_".

CA1505

CA1505: Uniknąć kod unmaintainable

Typ lub metoda ma niską wartość indeksu konserwacji.Niski indeks konserwacji wskazuje, że typ lub metoda są prawdopodobnie trudne do utrzymania i są dobrymi kandydatami do przeprojektowania.

CA1506

CA1506: Uniknąć nadmiernego klasy sprzęgu

Ta reguła mierzy sprzęgnięcie klasy przez liczenie unikatowych odwołań typów, które zawiera typ lub metoda.

CA1600

CA1600: Nie należy używać priorytetu bezczynności

Nie należy ustawiać priorytetu procesu na Idle.Procesy, które mają System.Diagnostics.ProcessPriorityClass.Idle, zajmują procesor, gdy mógłby być bezczynny, a zatem będą blokować stan gotowości.

CA1601

CA1601: Nie należy używać czasomierzy, które uniemożliwiają zmiany stanu zasilania

Wyższa częstotliwość działań okresowych będzie sprawiać, że procesor będzie zajęty i będzie zakłócać czasomierze bezczynności oszczędzania energii, które wyłączają ekran i dyski twarde.

CA1700

CA1700: Nie nazwy wartości wyliczenia 'Zastrzeżony'

Ta reguła zakłada, że element członkowski wyliczenia, który ma nazwę, która zawiera "reserved", nie jest obecnie używany, ale jest symbolem zastępczym, do zmiany nazwy lub usunięcia w przyszłej wersji.Zmiana nazwy lub usuwanie członka jest przerywającą zmianą.

CA1701

CA1701: Wyrazy złożone ciąg zasobów powinny być bocznym poprawnie

Każdy wyraz w ciągu zasobu jest podzielona na tokeny oparte na obudowie.Każda ciągła kombinacja dwóch tokenów jest sprawdzana przez bibliotekę sprawdzania pisowni firmy Microsoft.Jeżeli zostanie rozpoznane, słowo powoduje naruszenie reguły.

CA1702

CA1702: Wyrazy złożone powinny być bocznym poprawnie

Nazwa identyfikatora zawiera wiele wyrazów i co najmniej jeden z wyrazów wydaje się być złożonym wyrazem, w którym wielkość liter nie jest poprawna.

CA1703

CA1703: Ciągi zasobów powinny być pisane poprawnie

Ciąg zasobu zawiera jeden lub więcej wyrazów, które nie są rozpoznane przez bibliotekę sprawdzania pisowni Microsoft.

CA1704

CA1704: Identyfikatory powinny być pisane poprawnie

Nazwa widocznego z zewnątrz identyfikatora zawiera jeden lub więcej wyrazów, które nie są rozpoznany przez bibliotekę sprawdzania pisowni Microsoft.

CA1707

CA1707: Identyfikatory nie powinien zawierać znaki podkreślenia

Przez konwencję, identyfikatory nazw nie zawierają znaku podkreślenia (_).Ta reguła sprawdza przestrzenie nazw, typy, elementy członkowskie i parametry.

CA1708

CA1708: Identyfikatory powinny się różnić o więcej niż w przypadku

Identyfikatory przestrzeni nazw, typów, elementów członkowskich i parametry nie mogą się różnić jedynie wielkością liter, ponieważ języki dla CLR nie muszą rozróżniać wielkości liter.

CA1709

CA1709: Identyfikatory powinny być bocznym poprawnie

Przez konwencję, nazwy parametrów używają notacji CamelCase, a przestrzesnie nazw, typy i elementy członkowskie notacji PascalCase.

CA1710

CA1710: Identyfikatory powinny mieć poprawny sufiks

Przez konwencję, nazwy typów, które rozszerzają pewne typy podstawowe lub implementują pewne interfejsy lub typy pochodzące z tych typów, mają przyrostek, który jest skojarzony z typem bazowym lub interfejsem.

CA1711

CA1711: Identyfikatory nie powinien mieć sufiks niepoprawne

Przez konwencję, nazwy typów, które roszeszają pewne typy podstawowe lub implementują pewne interfejsy lub typy pochodzące z tych typów, powinny się kończyć przez określony, zarezerwowany sufix.Inne nazwy typów nie powinny używać tych zarezerwowanych sufiksów.

CA1712

CA1712: Nie prefiks wartości wyliczenia o nazwie typu

Nazwy elementów członkowskich wyliczenia nie mają prefiksu od nazwy typu, ponieważ narzędzia programistyczne dostarczają informacje na temat typu.

CA1713

CA1713: Zdarzenia nie powinny mieć, przed lub po prefiksie

Nazwa zdarzenia rozpoczyna się od "Before" lub "After".Nazwa powiązanych zdarzeń, które są wywoływane w określonej kolejności, używa czasu teraźniejszego lub przeszłego, aby wskazać względne położenie akcji w sekwencji.

CA1714

CA1714: Wyliczenia flag powinny mieć nazwy w liczbie mnogiej

Publiczne wyliczenie ma atrybut System.FlagsAttribute, a jego nazwa nie kończą się na "s".Typy, które są oznaczone przy użyciu FlagsAttribute mają nazwy, które są liczby mnogiej, ponieważ atrybut wskazuje, że można określić więcej niż jedną wartość.

CA1715

CA1715: Identyfikatory powinny mieć odpowiedni prefiks

Nazwa interfejsu, który jest widoczne z zewnątrz, nie zaczyna się z wielkiej litery "I".Nazwa parametru typu generycznego na zewnątrznie widocznym typie lub metodzie, nie zaczyna się od litery "T".

CA1716

CA1716: Identyfikatory nie powinny być zgodne słowa kluczowe

Przestrzeń nazw lub nazwa typu odpowiada zastrzeżonym słowom kluczowym w języku programowania.Identyfikatory przestrzeni nazw i typów nie powinny być zgodna ze słowami kluczowymi, które są definiowane przez języki dla CLR.

CA1717

CA1717: Tylko wyliczenia FlagsAttribute powinny mieć nazwy w liczbie mnogiej

Konwencje nazewnictwa dyktują, że nazwa w liczbie mnogiej dla wyliczenia wskazuje, że w tym samym czasie można określić więcej niż jedną wartość wyliczenia.

CA1719

CA1719: Parametr nazwy nie powinny pasują nazwy składników

Nazwa parametru powinna przekazywać znaczenie parametru, a element członkowski powinien przekazywać znaczenie elementu członkowskiego.Rzadko w projekcie są one takie same.Nazywanie parametru tak samo jak nazwa jego elementu członkowskiego jest nieintuicyjne i utrudnia używanie biblioteki.

CA1720

CA1720: Identyfikatory nie powinny zawierać nazwy typów

Nazwa parametru w widocznym na zewnątrz elemencie członkowskim zawiera nazwę typu danych lub nazwa widocznego na zewnątrz elementu członkowskiego zawiera specyficzną dla języka nazwę typu danych.

CA1721

CA1721: Właściwość nazwy nie powinna być zgodna get metod

Nazwa publicznego lub chronionego elementu członkowskiego zaczyna się od "Get" i odpowiada nazwie właściwości publicznej lub chronionej. "Metody "Get" i właściwości powinny mieć nazwy, które wyraźnie odróżniają ich funkcje.

CA1722

CA1722: Identyfikatory nie powinien mieć niepoprawny prefiks

Przez konwencję, tylko niektóre elementy mają nazwy, które rozpoczynają się od określonego prefiksu.

CA1724

CA1724: Typ nazwy nie powinna być zgodna obszarów nazw

Nazwy typów powinny nie odpowiadać nazwom przestrzeni nazw, które są zdefiniowane w bibliotece klas .NET Framework.Naruszenie tej zasady może zmniejszyć użyteczność biblioteki.

CA1725

CA1725: Parametr nazwy powinny być zgodne zgłoszenia podstawowego

Spójne nazywanie parametrów w zastąpieniu hierarchii zwiększa użyteczność zastąpienia metody.Nazwę parametru w metodzie pochodnej, która różni się od nazwy podstawowej deklaracji, może powodować dezorientację czy metoda jest zastąpieniem metody podstawowej lub nowym przeciążeniem metody.

CA1726

CA1726: Warunki stosowania preferowane

Nazwa widocznego z zewnątrz identyfikatora zawiera termin, dla którego istnieje alternatywny, preferowany termin.Alternatywnie, nazwa zawiera określenie "Flag" lub "Flags".

CA1800

CA1800: Nie niepotrzebnie oddanych.

Zduplikowane rzutowania zmniejszyć wydajność, zwłaszcza gdy rzutowania wykonywane są w niedużej iteracji.

CA1801

CA1801: Przejrzyj nieużywanych parametrów

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

CA1802

CA1802: Używaj literałów w przypadku, gdy jest to właściwe

Pole jest zadeklarowany jako statyczne i tylko do odczytu (Shared i ReadOnly w Visual Basic) i jest zainicjowany za pomocą wartości, która jest obliczalna w czasie kompilacji.Ponieważ wartość, która jest przypisana do pola docelowego jest obliczalna w czasie kompilacji, należy zmienić deklaracje pola na stałą (Const w Visual Basic), dzięki czemu wartość jest obliczana w czasie kompilacji, zamiast w czasie wykonywania.

CA1804

CA1804: Usuwanie nieużywanych zmiennych lokalnych

Nieużywane zmienne lokalne i niepotrzebne przydziały zwiększają rozmiar zestawu i zmniejszają wydajność.

CA1806

CA1806: Nie należy ignorować wyniki 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 zwracą HRESULT lub kod błędu, który nigdy nie jest używany.

CA1809

CA1809: Uniknąć nadmiernego zmiennych lokalnych

Typowa optymalizacja wydajności polega na przechowywaniu wartości w rejestrze procesora zamiast pamięci, co są określone jako "rejestrowanie wartości".Aby zwiększyć szanse, że wszystkie zmienne lokalne są przechowywane w rejestrze procesora, należy ograniczyć liczbę zmiennych lokalnych do 64.

CA1810

CA1810: Inicjowanie odwołanie typu statyczne pola wbudowane

Podczas gdy typ deklaruje jawny, statyczny konstruktor, kompilator just in time (JIT) dodaje sprawdzenie do każdej metody i konstruktora wystąpienia, aby upewnić się, że konstruktor statycznym został wcześniej wywołany.Sprawdzenia statycznego konstruktora mogą obniżyć wydajność.

CA1811

CA1811: Uniknąć nienależne kod prywatnych

Prywatny lub wewnętrzny element członkowski (na poziomie zestawu) nie ma obiektów wywołujących w zestawie; nie jest wywoływany przez CLR; i nie jest wywoływany przez obiekt delegowany.

CA1812

CA1812: Uniknąć bez wystąpień klas wewnętrznych

Wystąpienie typu na poziomie zestawu nie jest tworzone przez kod w zestawie.

CA1813

CA1813: Uniknąć niezamkniętych szczelnie atrybutów

Biblioteka klas .NET Framework zawiera metody do pobierania atrybutów niestandardowych.Domyślnie te metody wyszukują hierarchie dziedziczenia atrybutu.Plombowanie atrybutu eliminuje wyszukiwanie przez hierarchię dziedziczenia i może zwiększyć wydajność.

CA1814

CA1814: Wolą postrzępione tablice nad wielowymiarowe

Nieregularna tablica to tablica, której elementy są tablicami.Tablice, które tworzą elementy, mogą być różnych rozmiarów, prowadząc do mniejszej zmarnowanej przestrzeni dla niektórych zestawów danych.

CA1815

CA1815: Zastępowanie jest równe i operator jest równe na typy wartości

Dla typów wartości, dziedziczona implementacja operatora Equas wykorzystuje bibliotekę refleksji i porównuje zawartość wszystkich pól.Odbicie jest obliczeniowo kosztowne, a porównanie równości każdego pola może być niepotrzebne.Jeśli oczekujesz, że użytkownicy będą porównywać lub sortować wystąpienia lub używać wystąpień jako kluczy tabel haszowanych, typ wartości powinien implementować Equals.

CA1816

CA1816: Wywołanie GC.SuppressFinalize poprawnie

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).

CA1819

CA1819: Właściwości powinna nie zwracają tablice

Tablice, które są zwracane przez właściwości nie są chronione przed zapisem, nawet wtedy, gdy właściwość jest tylko do odczytu.Aby zachować tablicę odporną na manipulacje właściwość musi zwracać kopię tablicy.Zazwyczaj użytkownicy nie rozumieją niekorzystnych następstw wydajnościowych wywołania takiej właściwości.

CA1820

CA1820: Test puste ciągi przy użyciu długość ciągu

Porównywanie ciągów za pomocą właściwości String.Length lub metody String.IsNullOrEmpty jest znacznie szybsze niż użycie operatora Equals.

CA1821

CA1821: Usuń puste finalizatorów

Jeśli to tylko możliwe, należy unikać finalizatorów ze względu na dodatkowe obciążenie, które biorze udział w śledzeniu okresu instnienia obiektu.Pusty finalizatorów ponosi dodaje obciążenie i nie dostarcza żadnych korzyści.

CA1822

CA1822: Znak członków jako statyczny

Elementy członkowskie, które nie uzyskują dostępu do danych wystąpienia i nie wywołują metod wystąpienia mogą zostać oznaczone jako statyczne (Shared w Visual Basic).Po oznaczeniu metod jako statyczne, kompilator wygeneruje niewirtualne strony wywołań do tych członków.To może dać wymierny zysk wydajnościowy dla kodu wrażliwego na wydajność.

CA1823

CA1823: Uniknąć niewykorzystane pola private

Wykryte zostały pola prywatne, do których nie następuje dostęp w zestawie.

CA1824

CA1824: Znak zespołów o Atrybut NeutralResourcesLanguageAttribute

Atrybut NeutralResourcesLanguage informuje ResourceManager języka, który był używany do wyświetlania zasobów neutralnej kultury dla zestawu.To zwiększa wydajność wyszukiwania dla pierwszego zasobu, który się ładuje i może zmniejszyć zestaw roboczy.

CA1900

CA1900: Wartość typu pola powinny być przenośne

Ta regułą sprawdza, że struktury, które są zadeklarowane przez użycie jawnego ukłądu, zostaną prawidłowo wyrównane podczas przekazywania do kodu niezarządzalnego na 64-bitowym systemie operacyjnym.

CA1901

CA1901: Deklaracje P/Invoke powinien być przenośne

Ta reguła oblicza rozmiar każdego parametru i wartości zwróconej przez P/Invoke i sprawdź czy rozmiar parametru jest poprawny podczas przekazywania do kodu niezarządzanego w 32-bitowych i 64-bitowych systemach operacyjnych.

CA1903

CA1903: Użyj tylko API z ram ukierunkowane

Element członkowski lub typ używa elementu członkowskiego lub typu, który został wprowadzony w dodatku Service Pack, który nie został uwzględniony razem ze wskazaną platformą docelową projektu.

CA2000

CA2000: Zbywać obiektów przed utratą zakresu

Ponieważ wyjątkowe zdarzenie może wystąpić, które uniemożliwi uruchomienie finalizatora obiekt, obiekty powinny być jawnie usuwane przez tym, jak wszystkie odwołania do niego są poza zakresem.

CA2001

CA2001: Unikać wywoływania metod problematyczne

Element członkowski wywołuje potencjalnie niebezpieczną lub problematyczną metodę.

CA2002

CA2002: Nie blokować obiektów z tożsamością słabe

Obiekt ma słabą tożsamość, kiedy bezpośrednio można uzyskać do niego dostęp poza granicami domeny aplikacji.Wątek, który próbuje uzyskać blokadę na obiekcie, który ma słabą tożsamość, może zostać zablokowany przez drugi wątek w domenie innej aplikacji, która ma blokady dla tego samego obiektu.

CA2003

CA2003: Nie traktować jako wątki włókna

Zarządzalny wątkek jest traktowany są jako wątek Win32.

CA2004

CA2004: Usuń wywołania GC.Utrzymywania aktywności

Podczas konwertowania użycia SafeHandle, należy usunąć wszystkie wywołania do GC.KeepAlive (obiekt).W tym przypadku, klasy nie powinny wywołać GC.KeepAlive.Założono to, że nie mają finalizatorów, ale polegają na SafeHandle do sfinalizowania uchwytu systemu operacyjnego dla nich.

CA2006

CA2006: Użyj SafeHandle do hermetyzacji zasoby macierzystych

Wykorzystanie IntPtr w kodzie zarządzanym może wskazywać na potencjalny problem zabezpieczeń i niezawodności.Wszystkich użycia IntPtr muszą być przejrzane w celu ustalenia czy użycie elementu SafeHandle lub podobnej technologii jest wymagane w tym miejscy.

CA2100

CA2100: Przejrzyj kwerend SQL dla luk w zabezpieczeniach

Metoda ustawia właściwość System.Data.IDbCommand.CommandText przez użycie ciągu, który jest zbudowany z argumentem ciągu do metody.Zasada ta zakłada, że argument ciągu zawiera dane wejściowe użytkownika.Ciąg polecenia SQL, który jest zbudowany z danych wejściowych użytkownika jest narażony na ataki przez iniekcję SQL.

CA2101

CA2101: Określ kierowanie dla argumentów typu string P/Invoke.

Element członkowski wywołania platformy zezwala na dostęp częściowo zaufanych wywołań, ma parametr ciągu i nie organizuje jawnie ciągu.Może to spowodować potencjalne luki w zabezpieczeniach.

CA2102

CA2102: Przechwytywać wyjątków nie CLSCompliant w ogólne programy obsługi

Element członkowskich w zestawie, który nie jest oznaczony za pomocą RuntimeCompatibilityAttribute lub jest oznaczony jako RuntimeCompatibility(WrapNonExceptionThrows = false), zawiera blok catch, który obsługuje System.Exception i nie zawiera bezpośrednio następującego, ogólnego bloku "catch".

CA2103

CA2103: Przegląd nadrzędnych zabezpieczeń

Metoda używa imperatywnych zabezpieczeń i może konstruować uprawnienia za pomocą informacji o stanie lub wartości zwrotnych, które można zmienić, tak długo, jak długo żądanie jest aktywne.Należy używać zabezpieczeń deklaracyjnych wszędzie, gdzie to możliwe.

CA2104

CA2104: Nie są deklarowane odczytu odniesienia tylko tych typów

Typ widoczny z zewnątrz zawiera widoczne z zewnątrz pola tylko do odczytu, które jest typu referencji zmiennej.Typ zmienny to typ, którego dane wystąpienie mogą być modyfikowane.

CA2105

CA2105: Pól tablicy nie są odczytywane tylko

Po zastosowaniu modyfikatora tylko do odczytu (ReadOnly w Visual Basic) do pola, które zawiera tablicę, pola nie można zmienić, aby odwoływało się do innej tablicy.Można jednak zmienić elementy tablicy, które są przechowywane w polu tylko do odczytu.

CA2106

CA2106: Secure deklaracji rozkazujących

Metoda potwierdza uprawnienia i żadne sprawdzanie bezpieczeństwa nie są wykonywane na obiekcie wywołującym.Potwierdzanie uprawnienia zabezpieczeń bez wykonywania kontroli zabezpieczeń można pozostawić zdatną do wykorzystania słabość zabezpieczeń w kodzie.

CA2107

CA2107: Przegląd Odmów i zezwolić na użycie tylko

Metoda PermitOnly i akcje zabezpieczeń CodeAccessPermission.Deny powinny być używane tylko przez tych, którzy mają zaawansowaną wiedze o zabezpieczeniach .NET Framework.Kod, który używa tych akcji zabezpieczeń powinien przejść przegląd zabezpieczeń.

CA2108

CA2108: Zabezpieczenia deklaracyjne Przegląd w przypadku typów wartości

Publiczny lub chroniony typy wartości jest zabezpieczony przez dostęp do danych lub zapotrzebowanie na łącza.

CA2109

CA2109: Przejrzyj widoczne procedury obsługi zdarzeń

Wykryto publiczną lub chronioną metodę obsługi zdarzeń.Metody obsługi zdarzeń nie powinny być udostępnione, chyba że jest to absolutnie konieczne.

CA2111

CA2111: Wskaźniki nie powinny być widoczne

Wskaźnik nie jest prywatny, wewnętrzny lub tylko do odczytu.Złośliwy kod może zmienić wartość wskaźnika, co potencjalnie umożliwia dostęp do dowolnego miejsca w pamięci lub powoduje błędy aplikacji lub systemu.

CA2112

CA2112: Zabezpieczonych typów nie powinny wystawiać pól

Typ publiczny lub chroniony zawiera pola publiczne i jest zabezpieczony przez zapotrzebowania na łącza.Jeśli kod ma dostęp do wystąpienia typu, który jest zabezpieczony przez zapotrzebowania na łącza, kod nie musi spełniać zapotrzebowania na łącza, aby uzyskać dostęp do pól typu.

CA2114

CA2114: Metody powinny być nadzbiorem uprawnień typu

Metoda nie powinna mieć zabezpieczeń deklaratywnych zarówno na poziomie metody i na poziomie typu dla tej samej akcji.

CA2115

CA2115: Wywołanie GC.Utrzymywania aktywności podczas korzystania z zasobów macierzystych

Ta reguła wykrywa błędy, które mogą wystąpić, ponieważ niezarządzany zasób jest zakończony podczas gdy wciąż jest używany w kodzie niezarządzanym.

CA2116

CA2116: Metody APTCA tylko powinien wywoływać metody APTCA

Gdy APTCA (element AllowPartiallyTrustedCallersAttribute) jest obecny zestawie całkowicie zaufanym i wykonuje kod w innym zestawie, który nie zezwala na dostęp częściowo zaufanych wywołań, możliwe jest wykorzystanie luk w bezpieczeństwie.

CA2117

CA2117: Typy APTCA powinny rozszerzać tylko typy bazowe APTCA

Gdy APTCA jest obecna w pełni zaufanym zestawie i typu w zestawie dziedziczy z typu, który nie zezwala na dostęp częściowo zaufanych wywołań, możliwe jest wykorzystanie luk w bezpieczeństwie.

CA2118

CA2118: Użycie Przegląd SuppressUnmanagedCodeSecurityAttribute

SuppressUnmanagedCodeSecurityAttribute zmienia domyślne zachowanie systemu zabezpieczeń dla elementów członkowskich, które wykonują kod niezarządzany, który używa wywołań międzyoperacyjnych COM lub systemu operacyjnego.Ten atrybut używany jest przede wszystkim do zwiększenia wydajności; jednak wzrost wydajności przychodzi ze znaczącym ryzykiem w bezpieczeństwie.

CA2119

CA2119: Zapieczętować metod zadowalających prywatne interfejsy

Dziedziczny typ publiczny dostarcza implementację metody, którą można zastąpić, wewnętrznego (Friend w Visual Basic) interfejsu.Aby naprawić naruszenie tej zasady, należy zapobiegać przed zastąpieniem metody poza zestawem.

CA2120

CA2120: Konstruktory serializacji bezpiecznego

Typ ten ma konstruktor, który przyjmuje obiekt System.Runtime.Serialization.SerializationInfo i obiekt System.Runtime.Serialization.StreamingContext (podpis konstruktora serializacji).Ten konstruktor nie jest zabezpieczony przez sprawdzanie zabezpieczeń, ale jeden lub więcej regularnych konstruktory typu są zabezpieczone.

CA2121

CA2121: Konstruktory statyczne powinny być prywatne

System wywołuje statyczny konstruktor przed stworzeniem pierwszego wystąpienia typu lub przed tym, jak następuje odwołanie do któregokolwiek ze statycznych elementów członkowskich.Jeśli konstruktor statyczny nie jest prywatny, może być wywołany przez kod inny niż system.W zależności od operacji, które są wykonywane w konstruktorze, może to spowodować nieoczekiwane zachowanie.

CA2122

CA2122: Nie ujawniać pośrednio metod żądających łącza

Element członkowski publiczny lub chronione ma zapotrzebowanie na łącza i jest wywoływany przez element członkowski, który nie sprawdza zabezpieczeń.Zapotrzebowania na łącza sprawdza uprawnienia tylko bezpośredniego wywołującego.

CA2123

CA2123: Ustawienie atrybutu LinkDemand powinny być identyczne base

Ta reguła dopasowywuje metodę do jej metody podstawowej, która jest interfejsem lub metodą wirtualna w innym typie, a następnie porównuje zapotrzebowania na łącza na każdym z nich.Jeśli zasada ta jest naruszona, złośliwy wywołujący można pominąć zapotrzebowanie na łącza przez wywołanie niezabezpieczonej metody.

CA2124

CA2124: Oblewanie podatne na koniec klauzul w zewnętrznym spróbuj

Metoda publiczne lub chronione zawiera blok try/finally.Wygląda na to, że blok finally resetuje stan zabezpieczeń i sam nie jest ujęty w bloku finally.

CA2126

CA2126: Typ LinkDemand wymagają dziedziczenie zapotrzebowania

Niezamkniętych typ publiczny jest chroniony za pomocą zapotrzebowania na łącza i ma metodę, którą można zastąpić.Ani typ ani metoda nie są chronione za pomocą żądania dziedziczenia.

CA2127

CA2136: Członków nie powinien mieć konflikt przezroczystość adnotacji

Krytyczny kod nie może wystąpić w zestawie, który jest w 100% przeźroczysty.Ta reguła analizuje zestawy w 100% przezroczyste dla adnotacji na poziomie typu, pola i metody.

CA2128

CA2147: Przezroczyste metody nie mogą używać zabezpieczeń potwierdza

Ta reguła analizuje wszystkie metody i typów w zestawie, który jest w 100% przeźroczysty lub mieszany przezroczysto-krytyczny i zaznacza deklaratywne lub imperatywne użycie Assert.

CA2129

CA2140: Przejrzysty kod nie musi odwołać krytycznych elementów zabezpieczeń

Metody, które są oznaczone przez SecurityTransparentAttribute wywołują niepubliczne elementy członkowskie, które są oznaczone jako SecurityCritical.Ta reguła analizuje wszystkie metody i typy w zestawie, który jest mieszany przezroczysto-krytyczny i oznacza wszelkie wywołania z przezroczystego kodu do niepublicznego krytycznego kodu, który nie jest oznaczony jako SecurityTreatAsSafe.

CA2130

CA2130: Stałe krytycznych zabezpieczeń powinny być przezroczyste

Wymuszanie przezroczystości nie jest wymuszane dla wartości stałych, ponieważ kompilatory wbudowują stałe wartości, tak aby nie było wymagane żadne wyszukiwanie w czasie wykonywania.Stałe pola powinny być przezroczyste dla zabezpieczeń tak, aby recenzenci kodu nie zakładali, że przezroczysty kod nie może uzyskać dostępu do stałej.

CA2131

CA2131: Typy krytycznych zabezpieczeń nie mogą uczestniczyć w równoważności typu

Typ uczestniczy w równoważniku typu i albo sam typ, albo element członkowski, albo pole, albo typ jest oznaczony za pomocą atrybutu SecurityCriticalAttribute.Ta reguła występuje na wszystkich typach krytycznych lub typach, które zawierają krytycznych metody lub pola, które uczestniczą w równoważniku typu.Gdy CLR wykryje taki typu, nie ładuje go z wyjątkiem TypeLoadException w czasie wykonywania.Zazwyczaj ta reguła jest wykorzystywana tylko wtedy, gdy użytkownicy ręcznie implementują równoważnik typu zamiast polegać na tlbimp i kompilatorach, aby wykonały równoważnik typu.

CA2132

CA2132: Konstruktory domyślne muszą być co najmniej tak ważne, jak konstruktory domyślny typ podstawowy

Typów i elementów członkowskich, których mają SecurityCriticalAttribute, nie można używać przez kod aplikacji Silverlight.Typy krytycznych dla bezpieczeństawa i członkowie mogą być używani tylko przez zaufany kodu w .NET Framework dla biblioteki klas Silverlight.Ponieważ publiczna lub chroniona konstrukcja w klasie pochodnej musi mieć taką samą lub większą przejrzystość niż jego klasa podstawowa, klasy w aplikacji nie mogą pochodzić z klasy oznaczone jako SecurityCritical.

CA2133

CA2133: Delegatów należy powiązać metody spójne przejrzystości

To ostrzeżenie jest zgłaszane na metodzie, która wiąże obiek delegowany, który jest oznaczony za pomocą SecurityCriticalAttribute, do metody, która jest przezroczysta lub oznaczone za pomocą SecuritySafeCriticalAttribute.Ostrzeżenie jest także zgłaszane na metodzie, która wiąże obiekt delegowany, który jest przezroczysty lub bezpieczne-krytyczne do metody krytycznej.

CA2134

CA2134: Metody muszą przechowywać spójne przejrzystości podczas zastępowania metody podstawowej

Ta reguła jest wykorzystywana, gdy metoda oznaczona za pomocą SecurityCriticalAttribute zastępuje metodę, która jest przezroczysta lub oznaczona za pomocą SecuritySafeCriticalAttribute.Również reguła jest wykorzystywana, gdy metoda, która jest przezroczysta lub oznaczona przy użyciu SecuritySafeCriticalAttribute zastępuje metodę oznaczoną za pomocą SecurityCriticalAttribute.Reguła jest stosowana podczas zastępowania metody wirtualnej lub implementującej interfejs.

CA2135

CA2135: Poziom 2 zestawów nie powinna zawierać LinkDemands

LinkDemands są przestarzałe w zestawie reguł zabezpieczeń poziomu 2.Zamiast używania LinkDemands do wymuszenia zabezpieczeń w czasie kompilacji JIT, należy oznaczyć metody, typy i póla za pomocą atrybutu SecurityCriticalAttribute.

CA2136

CA2136: Członków nie powinien mieć konflikt przezroczystość adnotacji

Atrybuty przezroczystości są stosowane od elementów kodu o większym zakresie do elementów o mniejszym zakresie.Atrybuty przezroczystości elementów kodu, które mają większy zakres mają pierwszeństwo przed atrybutami przejrzystości elementów kodu, które są zawarte w pierwszym elemencie.Na przykład klasa, która jest oznaczona za pomocą atrybutu SecurityCriticalAttribute nie może zawierać metody, która jest oznaczona za pomocą atrybutu SecuritySafeCriticalAttribute.

CA2137

CA2137: Przezroczyste metod musi zawierać tylko sprawdzalnych IL

Metoda zawiera nieweryfikowalny kod lub zwraca typ przez odwołanie.Ta reguła jest wykorzystywana kiedy przeźroczysty pod względem zabezpieczeń kod próbuje wykonać niemożliwy do zweryfikowania Microsoft Intermediate Language (MISL).Jednakże reguła nie zawiera pełnej weryfikacji IL i używa heurystyki do wykrywania większości naruszeń weryfikacji MSIL.

CA2138

CA2138: Przezroczyste metody nie musi wywołać metody z atrybutem SuppressUnmanagedCodeSecurity

Metoda przezroczysta pod względem bezpieczeństwa wywołuje metodę, która jest oznaczona za pomocą atrybutu SuppressUnmanagedCodeSecurityAttribute.

CA2139

CA2139: Przezroczyste metody nie mogą używać atrybutu HandleProcessCorruptingExceptions

Ta reguła jest wykorzystywana przez dowolną metodę, która jest przejrzysta i próbuje obsłużyć wyjątek uszkadzający proces przy użyciu HandleProcessCorruptedStateExceptionsAttribute.Wyjątek uszkadzający proces to klasyfikacja wyjątków CLR wersji 4.0 wątków takich jak AccessViolationException.Atrybut HandleProcessCorruptedStateExceptionsAttribute może być używana tylko przez krytyczny pod względem bezpieczeństwa metody i będą ignorowane jeśli zostaną zastosowane do metody przezroczystych.

CA2140

CA2140: Przejrzysty kod nie musi odwołać krytycznych elementów zabezpieczeń

Element kodu, który jest oznaczony za pomocą atrybutu SecurityCriticalAttribute jest krytyczny dla bezpieczeństwa.Przezroczysta metoda nie można użyć elementu krytycznego dla zabezpieczeń.Jeśli przezroczysty typ próbuje użyć typu krytycznego dla zabezpieczeń, zgłaszany jest TypeAccessException, MethodAccessException lub FieldAccessException.

CA2141

CA2141: przezroczyste metody nie muszą spełniać LinkDemands

Przezroczyste pod względem bezpieczeństwa metoda wywołuje metodę w zestawie, który nie jest oznaczony za pomocą APTCA lub spełnia LinkDemand dla typu lub metody.

CA2142

CA2142: Przejrzysty kod powinny być chronione nie z LinkDemands

Ta reguła jest zgłaszana na przezroczystej metodzie, które wymaga LinkDemands, aby uzyskać do niej dostęp.Przezroczysty kod zabezpieczeń nie powinien być odpowiedzialny za weryfikację zabezpieczeń operacji, a zatem nie powinien wymagać uprawnień.

CA2143

CA2143: Przezroczyste metody nie należy używać zabezpieczeń zapotrzebowania

Przezroczysty kod zabezpieczeń nie powinien być odpowiedzialny za weryfikację zabezpieczeń operacji, a zatem nie powinien wymagać uprawnień.Przejrzysty pod względem bezpieczeństwa kod powinien używać pełnych żądań, aby podejmować decyzje związane z zabezpieczeniami i kod krytyczny pod względem zabezpieczeń nie powinien polegać na kodzie przezroczystym, aby wykonywać pełne żądanie.

CA2144

CA2144: Przejrzysty kod nie powinien być ładowany zespołów z tablice bajtów

Przegląd zabezpieczeń dla kodu przezroczystego nie jest tak kompletny jak kodu krytycznego pod względem bezpieczeństwa, ponieważ przezroczysty kod nie może wykonywać czynności wrażliwych pod względem bezpieczeństwa.Zestawy, które są ładowane z tablicy bajtowej mogą nie być niezauważone w przezroczystym kodzie, a ta tablica bajtów może zawierać krytyczny albo, co ważdniejsze, krytyczny dla bezpieczeństwa kod, który musi być poddany inspekcji.

CA2145

CA2145: Przezroczyste metod powinny nie być ozdobione SuppressUnmanagedCodeSecurityAttribute

Metody, które są oznaczone przez atrybut SuppressUnmanagedCodeSecurityAttribute mają niejawny LinkDemand umieszczony na dowolnej metody, który je wywołuje.Ten LinkDemand wymaga, że kod wywołujący jest krytycznych dla bezpieczeństwa.Oznaczanie metody, która używa SuppressUnmanagedCodeSecurity poprzez używanie atrybutu SecurityCriticalAttribute sprawia, że wymóg ten jest bardziej oczywisty dla obiektów wywołujących metodę.

CA2146

CA2146: Typy muszą być co najmniej tak ważne, jak ich typów podstawowych i interfejsów

Ta reguła jest wykorzystywana, gdy typ pochodny ma atrybut przezroczystości pod względem zabezpieczeń, który nie jest tak tak krytycznyny, jak jego typ podstawowy lub zaimplementowany interfejs.Tylko typy krytyczne pod względem zabezpieczeń mogą pochodzić od podstawowych typów krytycznych lub implementować interfejsy krytyczne, a tylko typy krytyczne lub krytyczne dla bezpieczeństwa mogą pochodzić od podstawowych typów krytycznych dla bezpieczeństwa lub implementować interfejsy krytyczne dla bezpieczeństwa.

CA2147

CA2147: Przezroczyste metody nie mogą używać zabezpieczeń potwierdza

Kod, który jest oznaczony jako SecurityTransparentAttribute, nie ma przyznanego wystarczającego uprawnienia do potwierdzenia.

CA2149

CA2149: Przezroczyste metody nie musi wywołać do kodu macierzystego

Ta reguła jest wykorzystywana dla każdej przezroczystej metodzie, która wywołuje bezpośrednio kod macierzysty, na przykład poprzez P/Invoke.Naruszenie tej zasady prowadzi do wyjątkuMethodAccessException w poziomie 2 modelu przezroczystości i pełnego żądania dla UnmanagedCode w modelu przezroczystości poziomu 1.

CA2200

CA2200: Ponownego zgłoszenia do zachowania szczegółów stosu

Wyjątek jest zgłaszany ponownie i wyjątek jest jawnie określony w instrukcji "throw".Jeśli wyjątek jest zgłaszany ponownie przez określenie wyjątku w instrukcji "throw", lista wywołań metod między pierwotną metodą, która zgłosiła wyjątek, a bieżącą metodą zostanie utracona.

CA2201

CA2201: Nie należy podnosić typów wyjątków zarezerwowane

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

CA2202

CA2202: Nie usuwaj obiekty wiele razy

Implementacja metody zawiera ścieżki kodu, które powodują wielkrotne 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

CA2204: Literały powinny być pisane 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

CA2205: Użyj zarządzane odpowiedniki interfejsu Win32 API

System operacyjny wywołuje metodę, która jest zdefiniowana, a metoda, która ma równoważną funkcjonalność znajduje się w bibliotece klas .NET Framework.

CA2207

CA2207: Zainicjuj inline statyczne pola Typ wartości

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

CA2208: Poprawnie utworzyć wystąpienia argumentu wyjątkó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.

CA2210

CA2210: Zestawów powinny mieć prawidłowe silnej nazwy

Silna nazwa chroni klientów przed nieświadomym ładowaniem zestawu, który został zmieniony.Zestawy bez mocnej nazwy nie powinny być wdrażane poza bardzo ograniczonymi scenariuszami.Jeśli udostępnia lub dystrybuuje się zestawy, które nie są poprawnie podpisane, zestaw może zostać zmieniony, środowisko uruchomieniowe języka wspólnego może nie załadować zestawu lub użytkownik będzie musiał wyłączyć weryfikację na swoim komputerze.

CA2211

CA2211:-Stała pól 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 takich pól musi być starannie kontrolowany i wymaga zaawansowanych technik programowania, aby synchronizować dostępu do obiektu klasy.

CA2212

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

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

CA2213

CA2213: Winny być usuwane jednorazowe pól

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

CA2214: Nie wymagają wykonać metody konstruktory

Gdy konstruktora wywołuje metodę wirtualną, konstruktor wystąpienia, który wywołuje metodę mógl nie zostać wykonany.

CA2215

CA2215: Metody zbycia powinna wywołać zbycia klasy podstawowej

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

CA2216

CA2216: Typy jednorazowych należy zadeklarować finalizatorów

Typ, który implementuje System.IDisposable i zawiera pola, które sugerują wykorzystania zasobów niezarządzanych, nie implementuje finalizatora jako opisano w Object.Finalize.

CA2217

CA2217: Nie należy oznaczać wyliczenia z FlagsAttribute

Zewnętrznie widoczne wyliczenie jest oznaczone przy użyciu FlagsAttribute i posiada jeden lub więcej wartości, które nie są potęgami dwójki lub kombinacji innych zdefiniowanych wartości z wyliczenia.

CA2218

CA2218: Zastępowanie GetHashCode na zastępowanie równa się

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

CA2219: Nie należy podnosić wyjątki w klauzulach wyjątek

Kiedy jest wyjątek jest zgłaszany w klauzuli "finally" lub "fault", nowy wyjątek ukrywa aktywne wyjąteki.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

CA2220: Finalizatorów powinna wywołać finalizatorów klasy podstawowej

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

CA2221

CA2221: Powinny być chronione finalizatorów

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

CA2222

CA2222: Nie zmniejszając dziedziczonego członka widoczności

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

CA2223: Członkowie powinna różnić się o więcej niż zwracany typ

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

CA2224: Zastępowanie jest równe na przeciążanie operatora równości

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

CA2225

CA2225: Operator overloads nazwaną zastępcy

Wykryto przeciążony operator i nie znaleziono alternatywnej, oczekiwanie nazwanej metody.Nazwany alternatywny element członkowski udostępnia taką samą funkcjonalność jak operator i jest dostarczony programistom, którz programują w językach, które nie obsługują przeciążonych operatorów.

CA2226

CA2226: Podmioty gospodarcze powinny mieć overloads symetryczne

Typ implementuje operator równości lub nierówności, ale nie implementuje operatora przeciwnego.

CA2227

CA2227: Kolekcja właściwości 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

CA2228: Nie należy dostarczać formaty niepublikowane zasobów

Pliki zasobów, które zostały zbudowane przy użyciu wstępnych wydań .NET Framework mogą nie być użyteczne z obsługiwanymi wersji .NET Framework.

CA2229

CA2229: Konstruktory serializacji wdrożenie

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

CA2230: Użyj params dla zmiennej argumentów

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

CA2231

CA2231: Operator przeciążenie jest równe na przesłanianie ValueType.Equals

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

CA2232

CA2232: Punkty wejścia Windows Forms Mark z 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

CA2233: Operacje nie powinny przepełnienia

Nie należy wykonywać operacji arytmetycznych bez uprzedniego sprawdzania argumentów.To zapewnia, że wynik operacji nie jest spoza zakresu możliwych wartości dla typów danych, które są zaangażowane.

CA2234

CA2234: Pass System.Uri obiektów zamiast z ciągów znakó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

CA2235: Oznaczyć wszystkie pola nie można serializować

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

CA2236

CA2236: Wywołanie metody klasy bazowej typy ISerializable

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

CA2237

CA2237: Typy ISerializable znak z SerializableAttribute

Aby był rozpoznawalny przez CLR jako możliwy do serializacji, typy muszą być oznaczone za pomocą atrybutu SerializableAttribute nawet wtedy, gdy typ używa niestandardowych procedur serializacji poprzez implementację interfejsu ISerializable.

CA2238

CA2238: Prawidłowo zaimplementować Serializacja metod

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

CA2239

CA2239: Zapewnić deserialization metody pola opcjonalne

Typ ma pole, które jest oznaczone za pomocą atrybutu System.Runtime.Serialization.OptionalFieldAttribute, ale nie zapewnia metod obsługi zdarzeń deserializacji.

CA2240

CA2240: Wdrożenie ISerializable poprawnie

Aby naprawić naruszenie tej zasady, należy się upewnić, że metoda GetObjectData jest widoczna i możliwa do zastąpienia i należy upewnić się, że wszystkie pola wystąpienia są uwzględnione w procesie serializacji lub jawnie oznaczone atrybutem NonSerializedAttribute.

CA2241

CA2241: Zapewniają prawidłowe argumenty metod formatowania

Argument formatu, który jest przekazany do System.String.Format przekazany nie zawiera elementu format, który odpowiada każdemu obiektowi argumentu lub odwrotnie.

CA2242

CA2242: Test NaN poprawnie

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

CA2243: Atrybut literały ciągów powinna analizować poprawnie

Parametr o typie literału łańcuchowego atrybutu nie analizuje poprawnie adresu URL, identyfikatora GUID lub wersji.