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


Набор правил "Рекомендуемые правила для управляемого кода"

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

Правило

Описание

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