Набор правил "Базовые нормы и правила разработки" для управляемого кода
Для упрощения понимания и использования кода можно использовать правило правил руководства по проектированию 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 |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по