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 | Не используйте неопределенные значения errno | CERT 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, или _Generic | CERT 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 или WEOF | CERT C: Rule FIO34-C |
CERT C: правило FIO37-C | Не принимайте, что fgets () или fgetws () возвращает непустую строку, когда успешный | CERT C: Rule FIO37-C |
CERT C: правило FIO38-C | Не копируйте объект FILE | CERT 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 | Не разблокируйте или уничтожьте другое взаимное исключение потока POSIX | CERT 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 | Не выполняйте операции, которые могут блокироваться при содержании блокировки POSIX | CERT C: Rule POS52-C |
CERT C: правило POS53-C | Не используйте больше чем одно взаимное исключение для параллельных операций ожидания на условной переменной | CERT C: Rule POS53-C |
CERT C: правило POS54-C | Обнаружьте и обработайте ошибки библиотеки POSIX | CERT 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 |