MISRA C:2012 Dir 4.11

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

Описание

Определение директивы

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

Объяснение

Многие функции Standard C не проверяют валидность переданных им параметров. Даже если проверки выполняются компилятором, нет гарантии, что проверки адекватны. Для примера вы не должны передавать отрицательные числа в sqrt или log.

Реализация Polyspace

Polyspace® повышает результат нарушения для аргументов функции библиотеки, если все следующие значения true:

  • Аргумент является локальной переменной.

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

  • Соответствующий параметр функции библиотеки имеет ограниченную входную область.

  • Функция библиотеки является одной из следующих распространенных математических функций:

    • sqrt

    • tan

    • pow

    • log

    • log10

    • fmod

    • acos

    • asin

    • acosh

    • atanh

    • или atan2

Bug Finder и Code Prover проверяют это правило по-разному. Анализ может привести к различным результатам.

Совет

Чтобы выполнить массовое выравнивание всех результатов, связанных с одной и той же функцией библиотеки, используйте столбец Detail на панели Results List. Щелкните заголовок столбца, чтобы сгруппировать все результаты с одной и той же записью. Выберите первый результат, а затем последний результат при удержании Shift ключ. Присвойте статус одному из результатов. Если Вы не видите Detail столбец, щелкните правой кнопкой мыши по любому другому заголовку столбца и позвольте этот столбец.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Проверяйте информацию

Группа: Кодовые проекты
Категория: Требуемая
Категория AGC: Требуется
Введенный в R2014b