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

Для упрощения понимания и использования кода можно использовать правило правил руководства по проектированию Microsoft Basic. Этот набор правил следует включить, если проект включает в себя код библиотеки или если вы хотите применить рекомендации по использованию кода, который легко поддерживать.

Основные правила руководства по проектированию включают все правила в наборе правил управляемых рекомендуемых правил .

В следующей таблице описаны все правила в наборе правил руководства по проектированию Microsoft Basic.

Правило Description
CA1000 Не объявляйте статические члены в универсальных типах
CA1001 Типы, которым принадлежат освобождаемые поля, должны быть освобождаемыми
CA1002 Не предоставляйте универсальные списки
CA1003 Используйте экземпляры обработчика универсальных событий
CA1004 Универсальные методы должны предоставлять параметр типа
CA1005 Не используйте слишком много параметров в универсальных типах
CA1006 Не создавайте вложенные универсальные типы в сигнатурах членов
CA1007 По возможности используйте универсальные объекты
CA1008 Перечисляемые типы должны иметь нулевое значение
CA1009 Правильно объявляйте обработчики событий
CA1010 Коллекции должны реализовать универсальный интерфейс
CA1011 Попробуйте передать базовые типы в качестве параметров
CA1012 Абстрактные типы не должны иметь конструкторы
CA1013 Перегружайте оператор равенства при перегрузке операторов сложения и вычитания
CA1014 Пометьте сборки с помощью CLSCompliantAttribute
CA1016 Пометьте сборки с помощью AssemblyVersionAttribute
CA1017 Пометьте сборки с помощью ComVisibleAttribute
CA1018 Пометьте атрибуты с помощью AttributeUsageAttribute
CA1019 Определите методы доступа для аргументов атрибута
CA1023 Индексы не должны быть многомерными
CA1024 По возможности используйте свойства
CA1025 Замените повторяющиеся аргументы массивом параметров
CA1026 Не следует использовать параметры по умолчанию
CA1027 Пометьте перечисляемые типы с помощью FlagsAttribute
CA1028 Хранилище перечисляемых типов должно относиться к типу Int32
CA1030 По возможности используйте события
CA1031 Не перехватывайте типы общих исключений
CA1032 Реализуйте стандартные конструкторы исключений
CA1033 Методы интерфейса должны быть доступны для вызова дочерними типами
CA1034 Вложенные типы не должны быть видимыми
CA1035 В составе реализаций ICollection есть члены со строгим типом
CA1036 Переопределите методы в сопоставимых типах
CA1038 Перечислители должны иметь строгие типы
CA1039 Списки имеют строгие типы
CA1041 Укажите сообщение ObsoleteAttribute
CA1043 Используйте целый или строковый аргумент для индексаторов
CA1044 Свойства не должны быть доступными только для записи
CA1046 Не перегружайте оператор равенства для ссылочных типов
CA1047 Не объявляйте защищенные члены в запечатанных типах
CA1048 Не объявляйте виртуальные члены в запечатанных типах
CA1049 Типы, которым принадлежат собственные ресурсы, должны быть освобождаемыми
CA1050 Объявите типы в пространствах имен
CA1051 Не объявляйте видимые поля экземпляров
CA1052 Типы со статическими заполнителями должны быть запечатаны
CA1053 Типы со статическими заполнителями не должны иметь конструкторы
CA1054 Параметры URI не должны быть строками
CA1055 Возвращаемые значения URI не должны быть строками
CA1056 Свойства URI не должны быть строками
CA1057 Перегрузки строковых параметров URI вызывают перегрузки System.Uri
CA1058 Типы не должны расширять определенные базовые типы
CA1059 Члены не должны предоставлять определенные конкретные типы
CA1060 Переместите методы P/Invoke в класс NativeMethods
CA1061 Не скрывайте методы базовых классов
CA1063 Правильно реализуйте IDisposable
CA1064 Исключения должны быть общими
CA1065 Не вызывайте исключения в непредвиденных местах
CA1301 Избегайте повторяющихся акселераторов
CA1400 Для методов P/Invoke должны существовать точки входа
CA1401 Методы P/Invoke не должны быть видимыми
CA1403 Типы с автомакетом не должны быть видимыми для COM
CA1404 Вызывайте GetLastError сразу после P/Invoke
CA1405 Базовые типы, относящиеся к типу, видимому для COM, должны быть видимыми для COM
CA1410 Методы регистрации COM должны быть согласованными
CA1415 Правильно объявляйте методы P/Invoke
CA1500 Имена переменных не должны совпадать с именами полей
CA1502 Избегайте чрезмерной сложности
CA1708 Идентификаторы должны отличаться не только прописными и строчными буквами
CA1716 Идентификаторы не должны совпадать с ключевыми словами
CA1801 Проверьте неиспользуемые параметры
CA1804 Удалите неиспользуемые локальные переменные
CA1809 Избегайте лишних локальных переменных
CA1810 Инициализируйте статические поля ссылочных типов при объявлении
CA1811 Избегайте невызываемого частного кода
CA1812 Избегайте неиспользуемых внутренних классов
CA1813 Избегайте незапечатанных атрибутов
CA1814 Используйте массивы массивов вместо многомерных массивов
CA1815 Переопределяйте операторы Equals и равенства для типов значений
CA1819 Свойства не должны возвращать массивы
CA1820 Проверяйте наличие пустых строк, используя длину строки
CA1821 Удалите пустые методы завершения
CA1822 Пометьте члены как статические
CA1823 Избегайте неиспользуемых частных полей
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 Прозрачные методы должны содержать только поддающийся проверке промежуточный язык
CA2138 Прозрачные методы не должны вызывать методы с атрибутом SuppressUnmanagedCodeSecurity
CA2140 Прозрачный код не должен ссылаться на критические для безопасности элементы
CA2141 Прозрачные методы не должны удовлетворять LinkDemands
CA2146 Типы должны быть по крайней мере настолько же критическими, как их базовые типы и интерфейсы
CA2147 Прозрачные методы могут не использовать утверждения безопасности
CA2149 Прозрачные методы не должны вызывать машинный код
CA2200 Повторно порождайте исключения для сохранения сведений стека
CA2201 Не порождайте исключения зарезервированных типов
CA2202 Не ликвидируйте объекты несколько раз
CA2205 Используйте управляемые эквиваленты Win32 API
CA2207 Используйте встроенную инициализацию статических полей типов значений
CA2208 Правильно создавайте экземпляры исключений аргументов
CA2211 Поля, не являющиеся константами, не должны быть видимыми
CA2212 Не помечайте обслуживаемые компоненты с помощью WebMethod
CA2213 Следует высвобождать высвобождаемые поля
CA2214 Не вызывайте переопределяемые методы в конструкторах
CA2216 Высвобождаемые типы должны объявлять методы завершения
CA2217 Не помечайте перечисляемые типы с помощью FlagsAttribute
CA2219 В предложениях с исключениями не должны порождаться исключения
CA2220 Методы завершения должны вызывать метод завершения базового класса
CA2221 Методы завершения должны быть защищенными
CA2222 Не уменьшайте видимость наследуемого члена
CA2223 Члены должны различаться не только возвращаемым типом
CA2224 Переопределяйте Equals при перегрузке оператора равенства
CA2225 Для перегрузок операторов существуют варианты с именами
CA2226 Перегрузки операторов должны быть симметричными
CA2227 Свойства, возвращающие коллекции, должны быть доступными только для чтения
CA2229 Реализуйте конструкторы сериализации
CA2230 Используйте параметры для аргументов переменной
CA2231 Перегрузите оператор равенства на переопределяющем типе ValueType.Equals
CA2232 Отметьте точки входа Windows Forms меткой STAThread
CA2234 Передавайте объекты System.Uri вместо строк
CA2235 Пометьте все несериализуемые поля
CA2236 Вызывайте методы базового класса для типов ISerializable
CA2237 Пометьте типы ISerializable атрибутом SerializableAttribute
CA2238 Правильно реализуйте методы сериализации
CA2239 Обеспечьте наличие методов десериализации в необязательных полях
CA2240 Правильно реализуйте ISerializable
CA2241 Задайте правильные аргументы для методов форматирования
CA2242 Правильно выполняйте проверку NaN