Набор правил "Расширенные правила определения правильности" для управляемого кода
Набор правил расширенной правильности Майкрософт позволяет максимально увеличить логику и ошибки использования платформы, сообщаемые анализом кода. Дополнительное внимание уделяется определенным сценариям, таким как взаимодействие COM и мобильные приложения. Следует включить этот набор правил, если один из этих сценариев применяется к проекту или найти дополнительные проблемы в проекте.
Набор правил расширенной правильности Майкрософт содержит правила, которые находятся в наборе правил базовой правильности , которые содержат правила, которые находятся в наборе правил управляемых рекомендуемых правил .
В следующей таблице описаны все правила в наборе правил расширенной правильности Майкрософт.
Правило | Description |
---|---|
CA1001 | Типы, которым принадлежат освобождаемые поля, должны быть освобождаемыми |
CA1009 | Правильно объявляйте обработчики событий |
CA1016 | Пометьте сборки с помощью AssemblyVersionAttribute |
CA1033 | Методы интерфейса должны быть доступны для вызова дочерними типами |
CA1049 | Типы, которым принадлежат собственные ресурсы, должны быть освобождаемыми |
CA1060 | Переместите методы P/Invoke в класс NativeMethods |
CA1061 | Не скрывайте методы базовых классов |
CA1063 | Правильно реализуйте IDisposable |
CA1065 | Не вызывайте исключения в непредвиденных местах |
CA1301 | Избегайте повторяющихся акселераторов |
CA1400 | Для методов P/Invoke должны существовать точки входа |
CA1401 | Методы P/Invoke не должны быть видимыми |
CA1403 | Типы с автомакетом не должны быть видимыми для 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 | Прозрачные методы должны содержать только поддающийся проверке промежуточный язык |
CA2138 | Прозрачные методы не должны вызывать методы с атрибутом SuppressUnmanagedCodeSecurity |
CA2140 | Прозрачный код не должен ссылаться на критические для безопасности элементы |
CA2141 | Прозрачные методы не должны удовлетворять LinkDemands |
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 | Используйте управляемые эквиваленты Win32 API |
CA2215 | Метод Dispose должен вызывать базовый класс Dispose |
CA2221 | Методы завершения должны быть защищенными |
CA2222 | Не уменьшайте видимость наследуемого члена |
CA2223 | Члены должны различаться не только возвращаемым типом |
CA2224 | Переопределяйте Equals при перегрузке оператора равенства |
CA2226 | Перегрузки операторов должны быть симметричными |
CA2227 | Свойства, возвращающие коллекции, должны быть доступными только для чтения |
CA2239 | Обеспечьте наличие методов десериализации в необязательных полях |
CA1032 | Реализуйте стандартные конструкторы исключений |
CA1054 | Параметры URI не должны быть строками |
CA1055 | Возвращаемые значения URI не должны быть строками |
CA1056 | Свойства URI не должны быть строками |
CA1057 | Перегрузки строковых параметров URI вызывают перегрузки System.Uri |
CA1402 | Избегайте перегрузок в видимых COM-интерфейсах |
CA1406 | Не используйте аргументы Int64 для клиентов Visual Basic 6 |
CA1407 | Не используйте статические члены в типах, видимых для COM |
CA1408 | Не используйте тип AutoDual ClassInterfaceType |
CA1409 | Видимые для COM типы должны быть создаваемыми |
CA1411 | Методы регистрации COM не должны быть видимыми |
CA1412 | Пометьте интерфейсы ComSource как IDispatch |
CA1413 | Не используйте неоткрытые поля в типах значений, видимых для COM |
CA1414 | Пометьте логические аргументы P/Invoke с помощью MarshalAs |
CA1600 | Не используйте приоритет процесса простоя |
CA1601 | Не используйте таймеры, препятствующие изменению состояния электропитания |
CA1824 | Помечайте сборки с помощью NeutralResourcesLanguageAttribute |
CA2001 | Избегайте вызова проблемных методов |
CA2003 | Не рассматривайте волокна в качестве потоков |
CA2135 | Сборки уровня 2 не должны содержать LinkDemands |
CA2136 | Члены не должны иметь противоречащие заметки прозрачности |
CA2139 | Прозрачные методы могут не использовать атрибут HandleProcessCorruptingExceptions |
CA2142 | Прозрачный код не должен быть защищен проверками LinkDemands |
CA2143 | Прозрачные методы не должны использовать требования безопасности |
CA2144 | Прозрачный код не должен выполнять загрузку сборок из массивов байтов |
CA2145 | Прозрачные методы не должны быть отмечены атрибутом SuppressUnmanagedCodeSecurityAttribute |
CA2204 | Литералы должны иметь правильное правописание |
CA2211 | Поля, не являющиеся константами, не должны быть видимыми |
CA2217 | Не помечайте перечисляемые типы с помощью FlagsAttribute |
CA2218 | Переопределяйте GetHashCode при переопределении Equals |
CA2219 | В предложениях с исключениями не должны порождаться исключения |
CA2225 | Для перегрузок операторов существуют варианты с именами |
CA2228 | Не поставляйте предварительные форматы ресурсов |
CA2230 | Используйте параметры для аргументов переменной |
CA2233 | В операциях не должно быть переполнений |
CA2234 | Передавайте объекты System.Uri вместо строк |
CA2243 | Синтаксический разбор строковых литералов должен осуществляться правильно |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по