Набор правил "Минимальные правила для смешанного кода"
Минимальные правила для смешанного кода от Майкрософт связаны с наиболее важными проблемами в проектах C++, поддерживающих среду CLR, включая возможные уязвимости безопасности и случаи аварийного завершения работы приложений.Этот набор правил следует включать во все пользовательские наборы правил, создаваемые для проектов C++, которые поддерживают среду CLR.
Правило |
Описание |
---|---|
Использование неинициализированной памяти |
|
Разыменование пустого указателя |
|
Использование значения unchecked |
|
Нулевое завершение из вызова |
|
Недопустимое соединение |
|
Отсутствующий строковый аргумент для форматирования функции |
|
Отсутствующий целочисленный аргумент для форматирования функции |
|
Отсутствующий аргумент-указатель для форматирования функции |
|
Отсутствующий аргумент-указатель на строку для форматирования функции |
|
Возвращение не инициализированной памяти |
|
Индекс превышает максимальный размер буфера |
|
Индекс превышает максимальный размер буфера стека |
|
Отсутствующий аргумент с плавающей запятой для форматирования функции |
|
Дополнительный аргумент для форматирования функции |
|
Аргумент, отличный от числа с плавающей запятой, для форматирования функции |
|
Аргумент, отличный от целочисленного значения, для форматирования функции |
|
Аргумент, отличный от символьного значения, для форматирования функции |
|
Недопустимое приведение строк |
|
Недопустимый вызов CreateProcess |
|
Недопустимый аргумент-объект для форматирования функции |
|
Логическое НЕ, затем побитовое И |
|
Логическое НЕ, затем побитовое ИЛИ |
|
Недопустимый символьный аргумент для форматирования функции |
|
Недопустимый аргумент строк расширенных символов для форматирования функции |
|
Рассогласованная использование размера и количества |
|
Неверный вызов функции аргумента переменной |
|
Возможное несоответствие типов аргументов |
|
Переполнение при чтении |
|
Переполнение при записи |
|
Недопустимое значение параметра |
|
Недопустимое свойство атрибута |
|
Конфликтующие значения свойств атрибута |
|
Ссылка на параметр не может иметь значение null |
|
Значение null для типа, отличного от указателя |
|
MustCheck для типа void |
|
Размер буфера для типа, отличного от указателя, или массива |
|
Несоответствие null нулю при разыменовании |
|
Доступ для записи константы |
|
Возврат, используемый в предусловии |
|
Строка, заканчивающаяся нулем, для типа, отличного от указателя |
|
Значением MustCheck должно быть Yes или No. |
|
Размер элемента без учета размера буфера |
|
Размер буфера превышает размер массива |
|
Размер буфера для типа, отличного от указателя |
|
Нет свойств атрибута |
|
Допустимый размер для буфера, не поддерживающего чтение |
|
Допустимый размер для записи в буфер, не поддерживающий запись |
|
Недопустимая аннотация: значение свойства NeedsRelease должно быть равно Yes или No |
|
Недопустимое разыменование строки размера |
|
Недопустимый тип строки размера |
|
Недопустимый параметр строки размера |
|
Недопустимое недостижимое местоположение строки размера |
|
Недопустимый тип буфера строки размера |
|
Недопустимая аннотация: Свойство "NeedsRelease" не может быть использовано со значениями типа void |
|
Неопознанный стиль строки формата |
|
Если для данной функции использовать аннотации атрибута, все ее существующие аннотации __declspec станут недействительными |
|
Неверно указан размер: синтаксический анализ выражения невозможен |
|
Недопустимое Deref= или Notref=: синтаксический анализ выражения невозможен |
|
Значение не является одним из допустимых значений (Yes/No/Maybe) |
|
Значение не является строковым значением |
|
Значение не является числом |
|
Непредвиденная ошибка выражения аннотации |
|
Ожидаемое количество аргументов для аннотации не соответствует фактическому числу аргументов для аннотации |
|
Непредвиденная ошибка аннотации для аннотации |
|
Аннотируемый параметр должен быть указателем |
|
Разыменование пустого (NULL) указателя.Указатель содержит то же NULL значение, что и содержал другой указатель. |
|
Недопустимая ссылка на нестатический член |
|
Неоднозначная ссылка на член класса. |
|
_Success_ или _On_failure_ используется в недопустимом контексте |
|
Левый операнд указывает на структуру, используйте '->' |
|
Левый операнд является структурой, используйте "." |
|
Аннотации для контекста __on_failure не должны находиться в явном предварительном контексте |
|
Для SAL_context ожидалось статическое имя контекста |
|
Выражение указателя требуется для аннотации |
|
Аннотация _Use_decl_annotations_ должна использоваться для ссылки, без изменения, перед объявлением. |
|
Допустимые имена параметров атрибута: p1...p9 |
|
typefix нельзя применять к параметру, который уже имеет typefix |
|
Аннотация checkReturn применяется только к постусловиям для параметра конкретной функции. |
|
Для функции число параметров для аннотации не совпадает с числом параметров, обнаруженных в файле |
|
Для функции paramteer параметр аннотации не соответствует параметру, обнаруженном в файле |
|
Для параметра аннотации ожидался член перечисления |
|
Для параметра в аннотации ожидалось целочисленное выражение |
|
Для параметра в аннотации ожидалось строковое выражение |
|
__yes, __no или __maybe требуется для аннотации |
|
Не найден ожидаемый токен/идентификатор для аннотации, параметр |
|
Для аннотации требуются параметры. |
|
Невозможно определить верное число обязательных параметров в аннотации |
|
Аннотация не может также быть PrimOp (в текущем объявлении) |
|
Аннотация не может также быть PrimOp (см. предыдущее объявление) |
|
Параметр аннотации: невозможно использовать тип в аннотациях |
|
Аннотация не поддерживает параметры |
|
В типе параметра нет члена. |
|
Аннотация доступная только для массива |
|
pre, post или deref не применено для аннотации |
|
pre, post или deref применено к блоку |
|
Выражение __at не применяется к текущей функции |
|
Функция не может использоваться изолированно как аннотация |
|
Аннотацию нельзя использовать в выражениях |
|
Аннотация в параметре больше не поддерживается. |
|
Аннотация в параметре содержит несколько значений value, stringValue и longValue.Используйте paramn=xxx |
|
Аннотация в параметре одновременно содержит значение value, stringValue или longValue и выражение paramn=xxx.Используйте только paramn=xxx |
|
Аннотация в параметре содержит param2, но не содержит param1 |
|
Аннотация для функции в параметре не распознана |
|
Аннотации для функции в параметре требуется больше разыменований, чем допускает фактический аннотируемый тип. |
|
Аннотация для функции аннотирует "this" в функции, не являющейся членом |
|
Аннотация параметра для функции не соответствует типу параметра |
|
Несогласованная аннотация для функции: предыдущий экземпляр содержит ошибку. |
|
Несогласованная аннотация для функции: данный экземпляр содержит ошибку. |
|
Несогласованная аннотация для функции: параметр имеет другие аннотации в этом экземпляре. |
|
Несогласованная аннотация для функции: параметр имеет другие аннотации в этом экземпляре. |
|
dynamic_cast<>() не поддерживается в аннотациях |
|
В функции обнаружена синтаксическая ошибка аннотации |
|
Во встроенной функции обнаружена синтаксическая ошибка условной аннотации: |
|
Значения списков результата должны быть константами. |
|
В функции обнаружена синтаксическая ошибка аннотаций. |
|
Аннотация для функции: параметр не согласуется с объявлением функции при проверке |
|
Функция: подсказки не согласуются с объявлением функции |
|
Значение параметра для _Macro_value_ равно NULL |
|
Для символа обнаружен begin без соответствующего end. |
|
Для символа обнаружен end без соответствующего begin |
|
Строки форматирования должны находиться в предусловиях |
|
Для функции: синтаксическая ошибка в параметре |
|
Для функции: ошибка рядом с окончанием |
|
Для функции: синтаксическая ошибка в аннотации _At_() (не распознано имя параметра) |
|
Для функции: синтаксическая ошибка в аннотации _At_() (недопустимое имя параметра) |
|
Для функции: ReadableTo или WritableTo не содержало спецификацию ограничения в качестве параметра |
|
количество внешних элементов в аннотации для функции превышает фактическое число параметров |
|
постусловие null/notnull в deref уровня 0 не имеет смысла для функции. |
|
несовместимые типы операндов выражения для оператора |
|
Аннотации отсутствуют для первого объявления функции. |
|
Дополнительный оператор _Deref_ был найден в аннотации. |
|
Неоднозначный оператор _Deref_ был найден в аннотации. |
|
Неправильно помещенный оператор _Notref_ был применим к токену. |
|
При разборе токена была обнаружена ошибка. |
|
Аннотация описывает ситуацию, к которой неприменимы условия. |
|
Аннотация описывает ситуацию, когда динамическое значение (переменная) не может использоваться в условии. |
|
Типы, которым принадлежат освобождаемые поля, должны быть освобождаемыми |
|
Удалите пустые методы завершения |
|
Высвободите высвобождаемые поля |
|
Перегружать равенство операторов следует при перегрузке ValueType.Equals |