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


Набор правил "Минимальные правила для смешанного кода"

Минимальные правила для смешанного кода от Майкрософт связаны с наиболее важными проблемами в проектах C++, поддерживающих среду CLR, включая возможные уязвимости безопасности и случаи аварийного завершения работы приложений.Этот набор правил следует включать во все пользовательские наборы правил, создаваемые для проектов C++, которые поддерживают среду CLR.

Правило

Описание

C6001

Использование неинициализированной памяти

C6011

Разыменование пустого указателя

C6029

Использование значения unchecked

C6053

Нулевое завершение из вызова

C6059

Недопустимое соединение

C6063

Отсутствующий строковый аргумент для форматирования функции

C6064

Отсутствующий целочисленный аргумент для форматирования функции

C6066

Отсутствующий аргумент-указатель для форматирования функции

C6067

Отсутствующий аргумент-указатель на строку для форматирования функции

C6101

Возвращение не инициализированной памяти

C6200

Индекс превышает максимальный размер буфера

C6201

Индекс превышает максимальный размер буфера стека

C6270

Отсутствующий аргумент с плавающей запятой для форматирования функции

C6271

Дополнительный аргумент для форматирования функции

C6272

Аргумент, отличный от числа с плавающей запятой, для форматирования функции

C6273

Аргумент, отличный от целочисленного значения, для форматирования функции

C6274

Аргумент, отличный от символьного значения, для форматирования функции

C6276

Недопустимое приведение строк

C6277

Недопустимый вызов CreateProcess

C6284

Недопустимый аргумент-объект для форматирования функции

C6290

Логическое НЕ, затем побитовое И

C6291

Логическое НЕ, затем побитовое ИЛИ

C6302

Недопустимый символьный аргумент для форматирования функции

C6303

Недопустимый аргумент строк расширенных символов для форматирования функции

C6305

Рассогласованная использование размера и количества

C6306

Неверный вызов функции аргумента переменной

C6328

Возможное несоответствие типов аргументов

C6385

Переполнение при чтении

C6386

Переполнение при записи

C6387

Недопустимое значение параметра

C6500

Недопустимое свойство атрибута

C6501

Конфликтующие значения свойств атрибута

C6503

Ссылка на параметр не может иметь значение null

C6504

Значение null для типа, отличного от указателя

C6505

MustCheck для типа void

C6506

Размер буфера для типа, отличного от указателя, или массива

C6507

Несоответствие null нулю при разыменовании

C6508

Доступ для записи константы

C6509

Возврат, используемый в предусловии

C6510

Строка, заканчивающаяся нулем, для типа, отличного от указателя

C6511

Значением MustCheck должно быть Yes или No.

C6513

Размер элемента без учета размера буфера

C6514

Размер буфера превышает размер массива

C6515

Размер буфера для типа, отличного от указателя

C6516

Нет свойств атрибута

C6517

Допустимый размер для буфера, не поддерживающего чтение

C6518

Допустимый размер для записи в буфер, не поддерживающий запись

C6519

Недопустимая аннотация: значение свойства NeedsRelease должно быть равно Yes или No

C6521

Недопустимое разыменование строки размера

C6522

Недопустимый тип строки размера

C6523

Недопустимый параметр строки размера

C6525

Недопустимое недостижимое местоположение строки размера

C6526

Недопустимый тип буфера строки размера

C6527

Недопустимая аннотация: Свойство "NeedsRelease" не может быть использовано со значениями типа void

C6530

Неопознанный стиль строки формата

C6540

Если для данной функции использовать аннотации атрибута, все ее существующие аннотации __declspec станут недействительными

C6551

Неверно указан размер: синтаксический анализ выражения невозможен

C6552

Недопустимое Deref= или Notref=: синтаксический анализ выражения невозможен

C6701

Значение не является одним из допустимых значений (Yes/No/Maybe)

C6702

Значение не является строковым значением

C6703

Значение не является числом

C6704

Непредвиденная ошибка выражения аннотации

C6705

Ожидаемое количество аргументов для аннотации не соответствует фактическому числу аргументов для аннотации

C6706

Непредвиденная ошибка аннотации для аннотации

C28021

Аннотируемый параметр должен быть указателем

C28182

Разыменование пустого (NULL) указателя.Указатель содержит то же NULL значение, что и содержал другой указатель.

C28202

Недопустимая ссылка на нестатический член

C28203

Неоднозначная ссылка на член класса.

C28205

_Success_ или _On_failure_ используется в недопустимом контексте

C28206

Левый операнд указывает на структуру, используйте '->'

C28207

Левый операнд является структурой, используйте "."

C28210

Аннотации для контекста __on_failure не должны находиться в явном предварительном контексте

C28211

Для SAL_context ожидалось статическое имя контекста

C28212

Выражение указателя требуется для аннотации

C28213

Аннотация _Use_decl_annotations_ должна использоваться для ссылки, без изменения, перед объявлением.

C28214

Допустимые имена параметров атрибута: p1...p9

C28215

typefix нельзя применять к параметру, который уже имеет typefix

C28216

Аннотация checkReturn применяется только к постусловиям для параметра конкретной функции.

C28217

Для функции число параметров для аннотации не совпадает с числом параметров, обнаруженных в файле

C28218

Для функции paramteer параметр аннотации не соответствует параметру, обнаруженном в файле

C28219

Для параметра аннотации ожидался член перечисления

C28220

Для параметра в аннотации ожидалось целочисленное выражение

C28221

Для параметра в аннотации ожидалось строковое выражение

C28222

__yes, __no или __maybe требуется для аннотации

C28223

Не найден ожидаемый токен/идентификатор для аннотации, параметр

C28224

Для аннотации требуются параметры.

C28225

Невозможно определить верное число обязательных параметров в аннотации

C28226

Аннотация не может также быть PrimOp (в текущем объявлении)

C28227

Аннотация не может также быть PrimOp (см. предыдущее объявление)

C28228

Параметр аннотации: невозможно использовать тип в аннотациях

C28229

Аннотация не поддерживает параметры

C28230

В типе параметра нет члена.

C28231

Аннотация доступная только для массива

C28232

pre, post или deref не применено для аннотации

C28233

pre, post или deref применено к блоку

C28234

Выражение __at не применяется к текущей функции

C28235

Функция не может использоваться изолированно как аннотация

C28236

Аннотацию нельзя использовать в выражениях

C28237

Аннотация в параметре больше не поддерживается.

C28238

Аннотация в параметре содержит несколько значений value, stringValue и longValue.Используйте paramn=xxx

C28239

Аннотация в параметре одновременно содержит значение value, stringValue или longValue и выражение paramn=xxx.Используйте только paramn=xxx

C28240

Аннотация в параметре содержит param2, но не содержит param1

C28241

Аннотация для функции в параметре не распознана

C28243

Аннотации для функции в параметре требуется больше разыменований, чем допускает фактический аннотируемый тип.

C28245

Аннотация для функции аннотирует "this" в функции, не являющейся членом

C28246

Аннотация параметра для функции не соответствует типу параметра

C28250

Несогласованная аннотация для функции: предыдущий экземпляр содержит ошибку.

C28251

Несогласованная аннотация для функции: данный экземпляр содержит ошибку.

C28252

Несогласованная аннотация для функции: параметр имеет другие аннотации в этом экземпляре.

C28253

Несогласованная аннотация для функции: параметр имеет другие аннотации в этом экземпляре.

C28254

dynamic_cast<>() не поддерживается в аннотациях

C28262

В функции обнаружена синтаксическая ошибка аннотации

C28263

Во встроенной функции обнаружена синтаксическая ошибка условной аннотации:

C28264

Значения списков результата должны быть константами.

C28267

В функции обнаружена синтаксическая ошибка аннотаций.

C28272

Аннотация для функции: параметр не согласуется с объявлением функции при проверке

C28273

Функция: подсказки не согласуются с объявлением функции

C28275

Значение параметра для _Macro_value_ равно NULL

C28279

Для символа обнаружен begin без соответствующего end.

C28280

Для символа обнаружен end без соответствующего begin

C28282

Строки форматирования должны находиться в предусловиях

C28285

Для функции: синтаксическая ошибка в параметре

C28286

Для функции: ошибка рядом с окончанием

C28287

Для функции: синтаксическая ошибка в аннотации _At_() (не распознано имя параметра)

C28288

Для функции: синтаксическая ошибка в аннотации _At_() (недопустимое имя параметра)

C28289

Для функции: ReadableTo или WritableTo не содержало спецификацию ограничения в качестве параметра

C28290

количество внешних элементов в аннотации для функции превышает фактическое число параметров

C28291

постусловие null/notnull в deref уровня 0 не имеет смысла для функции.

C28300

несовместимые типы операндов выражения для оператора

C28301

Аннотации отсутствуют для первого объявления функции.

C28302

Дополнительный оператор _Deref_ был найден в аннотации.

C28303

Неоднозначный оператор _Deref_ был найден в аннотации.

C28304

Неправильно помещенный оператор _Notref_ был применим к токену.

C28305

При разборе токена была обнаружена ошибка.

C28350

Аннотация описывает ситуацию, к которой неприменимы условия.

C28351

Аннотация описывает ситуацию, когда динамическое значение (переменная) не может использоваться в условии.

CA1001

Типы, которым принадлежат освобождаемые поля, должны быть освобождаемыми

CA1821

Удалите пустые методы завершения

CA2213

Высвободите высвобождаемые поля

CA2231

Перегружать равенство операторов следует при перегрузке ValueType.Equals