Поделиться через


Набор правил "Базовые правила определения правильности" для управляемого кода

Набор правил "Основные правила для определения корректности кода" ориентирован на логические и общие ошибки в использовании API платформы.В наборе "Основные правила для определения корректности кода" содержатся правила из набора правил "Минимальные правила и рекомендации".Дополнительные сведения см. в разделе Набор правил "Рекомендуемые правила для управляемого кода". Следует включить этот набор правил для получения более широкого списка предупреждений, чем список, полученный при использовании минимального набора правил.

В следующей таблице описываются все правила в наборе правил корпорации Майкрософт "Основные правила для определения корректности кода".

Правило

Описание

CA1001

Типы, которым принадлежат освобождаемые поля, должны быть освобождаемыми

CA1009

Правильно объявите обработчики событий

CA1016

Пометьте сборки атрибутом AssemblyVersionAttribute

CA1033

Методы интерфейса должны быть доступны для вызова дочерним типам

CA1049

Типы, которым принадлежат собственные ресурсы, должны быть освобождаемыми

CA1060

Переместите P/Invokes в класс NativeMethods

CA1061

Не скрывайте методы базового класса

CA1063

Следует правильно реализовывать IDisposable

CA1065

Не вызывайте исключения в непредвиденных местах

CA1301

Избегайте повторяющихся сочетаний клавиш быстрого доступа

CA1400

Необходимо наличие точек входа P/Invoke

CA1401

Методы P/Invoke не должны быть видимыми

CA1403

Типы макета Auto не должны быть видимыми для COM

CA1404

Вызовите GetLastError сразу после P/Invoke

CA1405

Базовые типы, относящиеся к типу видимых COM-клиенту, должны быть видимыми для COM

CA1410

Методы регистрации COM должны быть согласованы

CA1415

Правильно объявите методы P/Invoke

CA1821

Удалите пустые методы завершения

CA1900

Поля типа значения должны быть переносимыми

CA1901

Объявления P/Invoke должны быть переносимыми

CA2002

Не блокируйте объекты со слабой идентификацией

CA2100

Проанализируйте SQL-запросы с целью выявления уязвимостей безопасности

CA2101

Укажите тип маршалинга для строковых аргументов P/Invoke

CA2108

Проверьте объявляемые параметры безопасности типов значений

CA2111

Указатели не должны быть видимыми

CA2112

Защищенные типы не должны предоставлять поля

CA2114

Безопасность метода должна быть надмножеством типа

CA2116

APTCA-методы должны вызывать только APTCA-методы

CA2117

APTCA-типы должны расширять только базовые APTCA-типы

CA2122

Не используйте косвенное представление методов с требованиями ссылки

CA2123

Переопределяющие требования ссылки должны быть идентичны базовым

CA2124

Ограничьте уязвимые предложения finally во внешних блоках try

CA2126

Для требований ссылок на тип необходимы требования наследования

CA2131

Критические с точки зрения безопасности типы могут не участвовать в эквивалентности типов

CA2132

Конструкторы по умолчанию должны быть по меньшей мере такими же критическими, как конструкторы по умолчанию базового типа

CA2133

Делегаты должны привязываться к методам с соответствующей прозрачностью

CA2134

Методы должны сохранять согласованную прозрачность при переопределении базовых методов

CA2137

Прозрачные методы должны содержать только поддающийся проверке IL

CA2138

Прозрачные методы не должны вызывать методы с атрибутом SuppressUnmanagedCodeSecurity

CA2140

Прозрачный код не должен ссылаться на элементы, критичные в плане безопасности

CA2141

Прозрачные методы не должны удовлетворять требования LinkDemand

CA2146

Типы должны быть настолько же критическими, как их базовые типы и интерфейсы.

CA2147

Прозрачные методы могут не использовать утверждения безопасности

CA2149

Прозрачные методы не должны вызывать машинный код

CA2200

Следует повторно вызывать исключение для сохранения сведений о стеке

CA2202

Не удаляйте объекты несколько раз

CA2207

Используйте встроенную инициализацию статических полей типов значений

CA2212

Не помечайте обслуживаемые компоненты атрибутом WebMethod

CA2213

Освобождаемые поля должны быть освобождены

CA2214

Не вызывайте переопределяемые методы в конструкторах

CA2216

Высвобождаемые типы должны объявлять метод завершения

CA2220

Методы завершения должны вызывать метод завершения базового класса

CA2229

Реализуйте конструкторы сериализации

CA2231

Перегружать оператор равенства следует на переопределяющем типе ValueType.Equals

CA2232

Отметьте точки входа Windows Forms меткой STAThread

CA2235

Пометьте все несериализуемые поля

CA2236

Вызовите методы базового класса для типов ISerializable

CA2237

Пометьте типы ISerializable атрибутом SerializableAttribute

CA2238

Правильно реализуйте методы сериализации

CA2240

Правильно реализуйте ISerializable

CA2241

Предоставьте правильные аргументы методам форматирования

CA2242

Правильно выполните проверку NaN

CA1008

Перечисляемые типы должны иметь нулевое значение

CA1013

Перегружайте оператор равенства при перегрузке операторов сложения и вычитания

CA1303

Не передавайте литералы в виде локализованных параметров

CA1308

Нормализуйте строки в верхнем регистре

CA1806

Не игнорируйте результаты метода

CA1816

Вызов GC.SuppressFinalize должен осуществляться правильно

CA1819

Свойства не должны возвращать массивы

CA1820

Проверьте наличие пустых строк путем проверки длины строки

CA1903

Используйте API-интерфейс только из целевой исполняющей среды

CA2004

Удалите вызовы GC.KeepAlive

CA2006

Используйте SafeHandle для инкапсуляции машинных ресурсов

CA2102

Перехватите исключения, не являющиеся CLSCompliant, с помощью общих обработчиков

CA2104

Не объявляйте изменяемые ссылочные типы, доступные только для чтения

CA2105

Поля массивов не должны быть доступны только для чтения

CA2106

Обеспечьте безопасность утверждений

CA2115

Вызовите GC.KeepAlive при использовании собственных ресурсов

CA2119

Запечатайте методы, соответствующие закрытым интерфейсам

CA2120

Обеспечьте безопасность конструкторов сериализации

CA2121

Статические конструкторы должны быть закрытыми

CA2130

Константы критической безопасности должны быть прозрачными

CA2205

Используйте управляемые эквиваленты API Win32

CA2215

Методы Dispose должны вызывать такие же методы базового класса

CA2221

Методы завершения должны быть защищены

CA2222

Не уменьшайте видимость унаследованных членов

CA2223

Члены должны различаться не только возвращаемым типом

CA2224

Переопределите равенство при перегрузке оператора равенства

CA2226

Перегрузки операторов должны быть симметричны

CA2227

Свойства коллекции должны иметь параметр "только для чтения"

CA2239

Предоставьте методы десериализации для необязательных полей