Набор правил "Базовые правила определения правильности" для управляемого кодаBasic Correctness Rules rule set for managed code

Набор правил "основные правила корректности" предназначен для логических ошибок и распространенных ошибок при использовании API-интерфейсов платформы.The Basic Correctness Rules rule set focuses on logic errors and common mistakes in the usage of framework APIs. Основные правила корректности включают правила из набора правил " управляемые Рекомендуемые правила ".The Basic Correctness Rules include the rules in the Managed Recommended Rules rule set.

В следующей таблице описаны все правила в наборе правил правил исправления Microsoft Basic.The following table describes all the rules in the Microsoft Basic Correctness Rules rule set.

ПравилоRule ОписаниеDescription
CA1001CA1001 Типы, которым принадлежат освобождаемые поля, должны быть освобождаемымиTypes that own disposable fields should be disposable
CA1009CA1009 Правильно объявляйте обработчики событийDeclare event handlers correctly
CA1016CA1016 Пометьте сборки с помощью AssemblyVersionAttributeMark assemblies with AssemblyVersionAttribute
CA1033CA1033 Методы интерфейса должны быть доступны для вызова дочерними типамиInterface methods should be callable by child types
CA1049CA1049 Типы, которым принадлежат собственные ресурсы, должны быть освобождаемымиTypes that own native resources should be disposable
CA1060CA1060 Переместите методы P/Invoke в класс NativeMethodsMove P/Invokes to NativeMethods class
CA1061CA1061 Не скрывайте методы базовых классовDo not hide base class methods
CA1063CA1063 Правильно реализуйте IDisposableImplement IDisposable correctly
CA1065CA1065 Не вызывайте исключения в непредвиденных местахDo not raise exceptions in unexpected locations
CA1301CA1301 Избегайте повторяющихся акселераторовAvoid duplicate accelerators
CA1400CA1400 Для методов P/Invoke должны существовать точки входаP/Invoke entry points should exist
CA1401CA1401 Методы P/Invoke не должны быть видимымиP/Invokes should not be visible
CA1403CA1403 Типы с автомакетом не должны быть видимыми для COMAuto layout types should not be COM visible
CA1404CA1404 Вызывайте GetLastError сразу после P/InvokeCall GetLastError immediately after P/Invoke
CA1405CA1405 Базовые типы, относящиеся к типу, видимому для COM, должны быть видимыми для COMCOM visible type base types should be COM visible
CA1410CA1410 Методы регистрации COM должны быть согласованнымиCOM registration methods should be matched
CA1415CA1415 Правильно объявляйте методы P/InvokeDeclare P/Invokes correctly
CA1821CA1821 Удалите пустые методы завершенияRemove empty finalizers
CA1900CA1900 Поля типов значений должны быть переносимымиValue type fields should be portable
CA1901CA1901 Объявления P/Invoke должны быть переносимымиP/Invoke declarations should be portable
CA2002CA2002 Не блокируйте объекты с ненадежными удостоверениямиDo not lock on objects with weak identity
CA2100CA2100 Проверьте запросы SQL на наличие уязвимостей системы безопасностиReview SQL queries for security vulnerabilities
CA2101CA2101 Укажите тип маршалинга для строковых аргументов P/InvokeSpecify marshaling for P/Invoke string arguments
CA2108CA2108 Проверьте объявляемые параметры безопасности типов значенийReview declarative security on value types
CA2111CA2111 Указатели не должны быть видимымиPointers should not be visible
CA2112CA2112 Защищенные типы не должны предоставлять поляSecured types should not expose fields
CA2114CA2114 Безопасность метода должна быть надмножеством типаMethod security should be a superset of type
CA2116CA2116 APTCA-методы должны вызывать только APTCA-методыAPTCA methods should only call APTCA methods
CA2117CA2117 APTCA-типы должны расширять только базовые APTCA-типыAPTCA types should only extend APTCA base types
CA2122CA2122 Не используйте косвенное представление методов с требованиями ссылкиDo not indirectly expose methods with link demands
CA2123CA2123 Переопределяющие требования ссылки должны быть идентичны базовымOverride link demands should be identical to base
CA2124CA2124 Ограничьте уязвимые предложения finally во внешних блоках tryWrap vulnerable finally clauses in outer try
CA2126CA2126 Для требований ссылок на тип необходимы требования наследованияType link demands require inheritance demands
CA2131CA2131 Критические для безопасности типы не могут участвовать в эквивалентности типовSecurity critical types may not participate in type equivalence
CA2132CA2132 Конструкторы по умолчанию должны быть по меньшей мере такими же критическими, как конструкторы по умолчанию базового типаDefault constructors must be at least as critical as base type default constructors
CA2133CA2133 Делегаты должны быть привязаны к методам с соответствующей прозрачностьюDelegates must bind to methods with consistent transparency
CA2134CA2134 Методы должны сохранять одинаковую прозрачность при переопределении базовых методовMethods must keep consistent transparency when overriding base methods
CA2137CA2137 Прозрачные методы должны содержать только поддающийся проверке промежуточный языкTransparent methods must contain only verifiable IL
CA2138CA2138 Прозрачные методы не должны вызывать методы с атрибутом SuppressUnmanagedCodeSecurityTransparent methods must not call methods with the SuppressUnmanagedCodeSecurity attribute
CA2140CA2140 Прозрачный код не должен ссылаться на критические для безопасности элементыTransparent code must not reference security critical items
CA2141CA2141 Прозрачные методы не должны соответствовать требованиям LinkDemandTransparent methods must not satisfy LinkDemands
CA2146CA2146 Типы должны быть по крайней мере настолько же критическими, как их базовые типы и интерфейсыTypes must be at least as critical as their base types and interfaces
CA2147CA2147 Прозрачные методы могут не использовать утверждения безопасностиTransparent methods may not use security asserts
CA2149CA2149 Прозрачные методы не должны вызывать машинный кодTransparent methods must not call into native code
CA2200CA2200 Повторно порождайте исключения для сохранения сведений стекаRethrow to preserve stack details
CA2202CA2202 Не ликвидируйте объекты несколько разDo not dispose objects multiple times
CA2207CA2207 Используйте встроенную инициализацию статических полей типов значенийInitialize value type static fields inline
CA2212CA2212 Не помечайте обслуживаемые компоненты с помощью WebMethodDo not mark serviced components with WebMethod
CA2213CA2213 Следует высвобождать высвобождаемые поляDisposable fields should be disposed
CA2214CA2214 Не вызывайте переопределяемые методы в конструкторахDo not call overridable methods in constructors
CA2216CA2216 Высвобождаемые типы должны объявлять методы завершенияDisposable types should declare finalizer
CA2220CA2220 Методы завершения должны вызывать метод завершения базового классаFinalizers should call base class finalizer
CA2229CA2229 Реализуйте конструкторы сериализацииImplement serialization constructors
CA2231CA2231 Перегрузите оператор равенства на переопределяющем типе ValueType.EqualsOverload operator equals on overriding ValueType.Equals
CA2232CA2232 Отметьте точки входа Windows Forms меткой STAThreadMark Windows Forms entry points with STAThread
CA2235CA2235 Пометьте все несериализуемые поляMark all non-serializable fields
CA2236CA2236 Вызывайте методы базового класса для типов ISerializableCall base class methods on ISerializable types
CA2237CA2237 Пометьте типы ISerializable атрибутом SerializableAttributeMark ISerializable types with SerializableAttribute
CA2238CA2238 Правильно реализуйте методы сериализацииImplement serialization methods correctly
CA2240CA2240 Правильно реализуйте ISerializableImplement ISerializable correctly
CA2241CA2241 Задайте правильные аргументы для методов форматированияProvide correct arguments to formatting methods
CA2242CA2242 Правильно выполняйте проверку NaNTest for NaN correctly
CA1008CA1008 Перечисляемые типы должны иметь нулевое значениеEnums should have zero value
CA1013CA1013 Перегружайте оператор равенства при перегрузке операторов сложения и вычитанияOverload operator equals on overloading add and subtract
CA1303CA1303 Не передавайте литералы в качестве локализованных параметровDo not pass literals as localized parameters
CA1308CA1308 Нормализуйте строки в верхний регистрNormalize strings to uppercase
CA1806CA1806 Не игнорируйте результаты методаDo not ignore method results
CA1816CA1816 Вызов GC.SuppressFinalize должен осуществляться правильноCall GC.SuppressFinalize correctly
CA1819CA1819 Свойства не должны возвращать массивыProperties should not return arrays
CA1820CA1820 Проверяйте наличие пустых строк, используя длину строкиTest for empty strings using string length
CA1903CA1903 Используйте API только из целевой рабочей средыUse only API from targeted framework
CA2004CA2004 Удалите вызовы GC.KeepAliveRemove calls to GC.KeepAlive
CA2006CA2006 Используйте SafeHandle для инкапсуляции собственных ресурсовUse SafeHandle to encapsulate native resources
CA2102CA2102 Перехватывайте исключения, не являющиеся CLSCompliant, с помощью общих обработчиковCatch non-CLSCompliant exceptions in general handlers
CA2104CA2104 Не объявляйте изменяющиеся ссылочные типы только для чтенияDo not declare read only mutable reference types
CA2105CA2105 Поля массивов не должны быть доступны только для чтенияArray fields should not be read only
CA2106CA2106 Обеспечьте безопасность утвержденийSecure asserts
CA2115CA2115 Вызывайте GC.KeepAlive при использовании собственных ресурсовCall GC.KeepAlive when using native resources
CA2119CA2119 Запечатайте методы, соответствующие частным интерфейсамSeal methods that satisfy private interfaces
CA2120CA2120 Обеспечьте безопасность конструкторов сериализацииSecure serialization constructors
CA2121CA2121 Статические конструкторы должны быть частнымиStatic constructors should be private
CA2130CA2130 Важные константы безопасности должны быть прозрачнымиSecurity critical constants should be transparent
CA2205CA2205 Используйте управляемые эквиваленты Win32 APIUse managed equivalents of Win32 API
CA2215CA2215 Метод Dispose должен вызывать базовый класс DisposeDispose methods should call base class dispose
CA2221CA2221 Методы завершения должны быть защищеннымиFinalizers should be protected
CA2222CA2222 Не уменьшайте видимость наследуемого членаDo not decrease inherited member visibility
CA2223CA2223 Члены должны различаться не только возвращаемым типомMembers should differ by more than return type
CA2224CA2224 Переопределяйте Equals при перегрузке оператора равенстваOverride equals on overloading operator equals
CA2226CA2226 Перегрузки операторов должны быть симметричнымиOperators should have symmetrical overloads
CA2227CA2227 Свойства, возвращающие коллекции, должны быть доступными только для чтенияCollection properties should be read only
CA2239CA2239 Обеспечьте наличие методов десериализации в необязательных поляхProvide deserialization methods for optional fields