Требуемый и статически осуществимый CERT C правила, поддержанные Polyspace Bug Finder

CERT C стандарт классифицирует инструкции, за которыми совместимый код С должен следовать как Правила. Эти Правила также рассматриваются осуществимыми статическим анализом. Polyspace® поддержки 120 из 120 таких инструкций.

CERT C правилоОписаниеСредство проверки Polyspace
CERT C: правило ARR30-CНе формируйте или используйте за пределы индексы массивов или указателиCERT C: Rule ARR30-C
CERT C: правило ARR32-CГарантируйте, что аргументы размера для массивов переменной длины находятся в допустимой области значенийCERT C: Rule ARR32-C
CERT C: правило ARR36-CНе вычитайте или сравнивайте два указателя, которые не относятся к тому же массивуCERT C: Rule ARR36-C
CERT C: правило ARR37-CНе добавляйте или вычитайте целое число к указателю на объект немассивовCERT C: Rule ARR37-C
CERT C: правило ARR38-CГарантируйте, что библиотечные функции не формируют недопустимые указателиCERT C: Rule ARR38-C
CERT C: правило ARR39-CНе добавляйте или вычитайте масштабированное целое число к указателюCERT C: Rule ARR39-C
CERT C: правило CON30-CОчистите специфичное для потока устройство хранения данныхCERT C: Rule CON30-C
CERT C: правило CON31-CНе уничтожайте взаимное исключение, в то время как оно заблокированоCERT C: Rule CON31-C
CERT C: правило CON32-CПредотвратите гонки данных при доступе к битовым полям от нескольких потоковCERT C: Rule CON32-C
CERT C: правило CON33-CИзбегайте условий состязания при использовании библиотечных функцийCERT C: Rule CON33-C
CERT C: правило CON34-CОбъявите объекты, совместно использованные потоками с соответствующими продолжительностями храненияCERT C: Rule CON34-C
CERT C: правило CON35-CИзбегайте мертвой блокировки путем привязки предопределенного порядкаCERT C: Rule CON35-C
CERT C: правило CON36-CПеренесите функции, которые могут побочно проснуться в циклеCERT C: Rule CON36-C
CERT C: правило CON37-CНе делайте позывного () в многопоточной программеCERT C: Rule CON37-C
CERT C: правило CON38-CСохраните потокобезопасность и живучесть при использовании условных переменныхCERT C: Rule CON38-C
CERT C: правило CON39-CНе соединяйте или отсоединяйте поток, к которому ранее соединили или отсоединилиCERT C: Rule CON39-C
CERT C: правило CON40-CНе обращайтесь к атомарной переменной дважды в выраженииCERT C: Rule CON40-C
CERT C: правило CON41-CПеренесите функции, которые могут перестать работать побочно в циклеCERT C: Rule CON41-C
CERT C: правило CON43-CНе позволяйте гонки данных в многопоточном кодеCERT C: Rule CON43-C
CERT C: правило DCL30-CОбъявите объекты с соответствующими продолжительностями храненияCERT C: Rule DCL30-C
CERT C: правило DCL31-CОбъявите идентификаторы перед использованием ихCERT C: Rule DCL31-C
CERT C: правило DCL36-CНе объявляйте идентификатор с конфликтными классификациями рычажных устройствCERT C: Rule DCL36-C
CERT C: правило DCL37-CНе объявляйте или задавайте зарезервированный идентификаторCERT C: Rule DCL37-C
CERT C: правило DCL38-CИспользуйте правильный синтаксис при объявлении члена массива с переменными границамиCERT C: Rule DCL38-C
CERT C: правило DCL39-CИзбегайте утечки информации в дополнении структурыCERT C: Rule DCL39-C
CERT C: правило DCL40-CНе создавайте несовместимые объявления той же функции или объектаCERT C: Rule DCL40-C
CERT C: правило DCL41-CНе объявляйте переменные в операторе switch перед первой меткой случаяCERT C: Rule DCL41-C
CERT C: правило ENV30-CНе изменяйте объект, на который ссылается возвращаемое значение определенных функцийCERT C: Rule ENV30-C
CERT C: правило ENV31-CНе используйте указатель среды после операции, которая может делать недействительным егоCERT C: Rule ENV31-C
CERT C: правило ENV32-CВсе выходные обработчики должны обычно возвращатьсяCERT C: Rule ENV32-C
CERT C: правило ENV33-CНе вызывайте систему ()CERT C: Rule ENV33-C
CERT C: правило ENV34-CНе храните указатели, возвращенные определенными функциямиCERT C: Rule ENV34-C
CERT C: правило ERR30-CОбнулите errno прежде, чем вызвать библиотечную функцию, которая, как известно, установила errno и проверять errno только после того, как функция возвратит отказ указания значенияCERT C: Rule ERR30-C
CERT C: правило ERR32-CНе используйте неопределенные значения errnoCERT C: Rule ERR32-C
CERT C: правило ERR33-CОбнаружьте и обработайте стандартные ошибки библиотекиCERT C: Rule ERR33-C
CERT C: правило ERR34-CОбнаружьте ошибки при преобразовании строки в номерCERT C: Rule ERR34-C
CERT C: правило EXP30-CНе зависьте от порядка оценки для побочных эффектовCERT C: Rule EXP30-C
CERT C: правило EXP32-CНе получайте доступ к энергозависимому объекту через энергонезависимую ссылкуCERT C: Rule EXP32-C
CERT C: правило EXP33-CНе читайте неинициализированную памятьCERT C: Rule EXP33-C
CERT C: правило EXP34-CНе разыменовывайте нулевых указателейCERT C: Rule EXP34-C
CERT C: правило EXP35-CНе изменяйте объекты с временным временем жизниCERT C: Rule EXP35-C
CERT C: правило EXP36-CНе бросайте указатели в более строго выровненные типы указателейCERT C: Rule EXP36-C
CERT C: правило EXP37-CВызовите функции с правильным номером и типом аргументовCERT C: Rule EXP37-C
CERT C: правило EXP39-CНе получайте доступ к переменной через указатель несовместимого типаCERT C: Rule EXP39-C
CERT C: правило EXP40-CНе изменяйте постоянные объектыCERT C: Rule EXP40-C
CERT C: правило EXP42-CНе сравнивайте дополнительные данныеCERT C: Rule EXP42-C
CERT C: правило EXP43-CИзбегайте, чтобы неопределенное поведение при использовании ограничило - квалифицированные указателиCERT C: Rule EXP43-C
CERT C: правило EXP44-CНе используйте побочные эффекты в операндах к sizeof, _Alignof, или _GenericCERT C: Rule EXP44-C
CERT C: правило EXP45-CНе выполняйте присвоения в операторах выбораCERT C: Rule EXP45-C
CERT C: правило EXP46-CНе используйте побитовый оператор с подобным boolean операндомCERT C: Rule EXP46-C
CERT C: правило EXP47-CНе вызывайте va_arg с аргументом неправильного типаCERT C: Rule EXP47-C
CERT C: правило FIO30-CИсключите ввод данных пользователем из строк форматаCERT C: Rule FIO30-C
CERT C: правило FIO32-CНе выполняйте операции на устройствах, которые только подходят для файловCERT C: Rule FIO32-C
CERT C: правило FIO34-CРазличайте символы, считанные из файла и EOF или WEOFCERT C: Rule FIO34-C
CERT C: правило FIO37-CНе принимайте, что fgets () или fgetws () возвращает непустую строку, когда успешныйCERT C: Rule FIO37-C
CERT C: правило FIO38-CНе копируйте объект FILECERT C: Rule FIO38-C
CERT C: правило FIO39-CНе делайте альтернативно ввода и вывода от потока без прошедшего сброса или располагающий вызовCERT C: Rule FIO39-C
CERT C: правило FIO40-CСбросьте строки на fgets () или fgetws () отказCERT C: Rule FIO40-C
CERT C: правило FIO41-CНе вызывайте getc (), putc (), getwc (), или putwc () с потоковым аргументом, который имеет побочные эффектыCERT C: Rule FIO41-C
CERT C: правило FIO42-CЗакройте файлы, когда они больше не будут необходимыCERT C: Rule FIO42-C
CERT C: правило FIO44-CТолько используйте значения для fsetpos (), которые возвращены в fgetpos ()CERT C: Rule FIO44-C
CERT C: правило FIO45-CИзбегайте условий состязания TOCTOU при доступе к файламCERT C: Rule FIO45-C
CERT C: правило FIO46-CНе получайте доступ к закрытому файлуCERT C: Rule FIO46-C
CERT C: правило FIO47-CИспользуйте строки допустимого форматаCERT C: Rule FIO47-C
CERT C: правило FLP30-CНе используйте переменные с плавающей точкой в качестве счетчиков циклаCERT C: Rule FLP30-C
CERT C: правило FLP32-CПредотвратите или обнаружьте область и ошибки области значений в математических функцияхCERT C: Rule FLP32-C
CERT C: правило FLP34-CУбедитесь, что преобразования с плавающей точкой в области значений нового типаCERT C: Rule FLP34-C
CERT C: правило FLP36-CСохраните точность при преобразовании интегральных значений в тип с плавающей точкойCERT C: Rule FLP36-C
CERT C: правило FLP37-CНе используйте объектные представления, чтобы сравнить значения с плавающей точкойCERT C: Rule FLP37-C
CERT C: правило INT30-CУбедитесь, что операции беззнаковых целых чисел не переносятсяCERT C: Rule INT30-C
CERT C: правило INT31-CУбедитесь, что целочисленные преобразования не приводят к потерянным или неправильно истолкованным даннымCERT C: Rule INT31-C
CERT C: правило INT32-CУбедитесь, что операции на целых числах со знаком не приводят к переполнениюCERT C: Rule INT32-C
CERT C: правило INT33-CУбедитесь, что деление и операции остатка не приводят к ошибкам деления на нульCERT C: Rule INT33-C
CERT C: правило INT34-CНе переключайте выражение отрицательным числом битов или большим, чем или равняйтесь количеству битов, которые существуют в операндеCERT C: Rule INT34-C
CERT C: правило INT35-CИспользуйте правильную целочисленную точностьCERT C: Rule INT35-C
CERT C: правило INT36-CПреобразование указателя на целое число или целое число к указателюCERT C: Rule INT36-C
CERT C: правило MEM30-CНе получайте доступ освобожденный памятьCERT C: Rule MEM30-C
CERT C: правило MEM31-CСвободная динамически выделенная память, когда больше не необходимыйCERT C: Rule MEM31-C
CERT C: правило MEM33-CВыделите и скопируйте структуры, содержащие член массива с переменными границами динамическиCERT C: Rule MEM33-C
CERT C: правило MEM34-CТолько свободная память, выделенная динамическиCERT C: Rule MEM34-C
CERT C: правило MEM35-CВыделите достаточную память для объектаCERT C: Rule MEM35-C
CERT C: правило MEM36-CНе изменяйте выравнивание объектов путем вызова перевыделения ()CERT C: Rule MEM36-C
CERT C: правило MSC30-CНе используйте rand () функция для генерации псевдослучайных чиселCERT C: Rule MSC30-C
CERT C: правило MSC32-CПравильно отберите генераторы псевдослучайного числаCERT C: Rule MSC32-C
CERT C: правило MSC33-CНе передавайте недопустимые данные asctime () функцияCERT C: Rule MSC33-C
CERT C: правило MSC37-CУбедитесь, что управление никогда не достигает конца непустой функцииCERT C: Rule MSC37-C
CERT C: правило MSC38-CНе обрабатывайте предопределенный идентификатор как объект, если это может только быть реализовано как макросCERT C: Rule MSC38-C
CERT C: правило MSC39-CНе вызывайте va_arg () на va_list, который имеет неопределенное значениеCERT C: Rule MSC39-C
CERT C: правило MSC40-CНе нарушайте ограниченияCERT C: Rule MSC40-C
CERT C: правило MSC41-CНикогда трудная кодозависимая информацияCERT C: Rule MSC41-C
CERT C: правило POS30-CИспользуйте readlink () функция правильноCERT C: Rule POS30-C
CERT C: правило POS34-CНе вызывайте putenv () с указателем на автоматическую переменную в качестве аргументаCERT C: Rule POS34-C
CERT C: правило POS35-CИзбегайте условий состязания при проверке на существование символьной ссылкиCERT C: Rule POS35-C
CERT C: правило POS36-CНаблюдайте правильный порядок аннулирования при отказе от привилегийCERT C: Rule POS36-C
CERT C: правило POS37-CУбедитесь, что отказ привилегии успешенCERT C: Rule POS37-C
CERT C: правило POS38-CОстерегайтесь условий состязания при использовании ветвления и дескрипторов файловCERT C: Rule POS38-C
CERT C: правило POS39-CИспользуйте правильный порядок байтов при передаче данных между системамиCERT C: Rule POS39-C
CERT C: правило POS44-CНе используйте сигналы отключить потокиCERT C: Rule POS44-C
CERT C: правило POS47-CНе используйте потоки, которые могут быть отменены асинхронноCERT C: Rule POS47-C
CERT C: правило POS48-CНе разблокируйте или уничтожьте другое взаимное исключение потока POSIXCERT C: Rule POS48-C
CERT C: правило POS49-CКогда к данным должны получить доступ несколько потоков, обеспечьте взаимное исключение и гарантируйте, что ни к каким смежным данным также не получают доступCERT C: Rule POS49-C
CERT C: правило POS50-CОбъявите объекты, совместно использованные потоками POSIX с соответствующими продолжительностями храненияCERT C: Rule POS50-C
CERT C: правило POS51-CИзбегайте мертвой блокировки с потоками POSIX путем привязки предопределенного порядкаCERT C: Rule POS51-C
CERT C: правило POS52-CНе выполняйте операции, которые могут блокироваться при содержании блокировки POSIXCERT C: Rule POS52-C
CERT C: правило POS53-CНе используйте больше чем одно взаимное исключение для параллельных операций ожидания на условной переменнойCERT C: Rule POS53-C
CERT C: правило POS54-CОбнаружьте и обработайте ошибки библиотеки POSIXCERT C: Rule POS54-C
CERT C: правило PRE30-CНе создавайте универсальное имя персонажа посредством конкатенацииCERT C: Rule PRE30-C
CERT C: правило PRE31-CИзбегайте побочных эффектов в аргументах к небезопасным макросамCERT C: Rule PRE31-C
CERT C: правило PRE32-CНе используйте директивы препроцессору в вызовах подобных функции макросовCERT C: Rule PRE32-C
CERT C: правило SIG30-CВызовите только асинхронно-безопасные функции в обработчиках сигналаCERT C: Rule SIG30-C
CERT C: правило SIG31-CНе получайте доступ к общим объектам в обработчиках сигналаCERT C: Rule SIG31-C
CERT C: правило SIG34-CНе делайте позывного () из прерываемых обработчиков сигналаCERT C: Rule SIG34-C
CERT C: правило SIG35-CНе возвращайтесь из вычислительного обработчика сигнала исключенияCERT C: Rule SIG35-C
CERT C: правило STR30-CНе пытайтесь изменить строковые литералыCERT C: Rule STR30-C
CERT C: правило STR31-CГарантируйте, что устройство хранения данных для строк имеет достаточный пробел для символьных данных и пустого терминатора строкиCERT C: Rule STR31-C
CERT C: правило STR32-CНе передавайте не пустую отключенную последовательность символов библиотечной функции, которая ожидает строкуCERT C: Rule STR32-C
CERT C: правило STR34-CБросьте символы к char без знака прежде, чем преобразовать в большие целочисленные размерыCERT C: Rule STR34-C
CERT C: правило STR37-CАргументы к обрабатывающим символ функциям должны быть представимыми как char без знакаCERT C: Rule STR37-C
CERT C: правило STR38-CНе путайте строки узкого и широкого символа и функцииCERT C: Rule STR38-C
CERT C: правило WIN30-CПравильно парные функции выделения и освобожденияCERT C: Rule WIN30-C

Смотрите также

Похожие темы