MISRA C:2012 Dir 4.11

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

Описание

Направляющее определение

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

Объяснение

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

Реализация Polyspace

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

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

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

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

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

    • sqrt

    • tan

    • pow

    • log

    • log10

    • fmod

    • acos

    • asin

    • acosh

    • atanh

    • или atan2

Средство поиска ошибки и Программа автоматического доказательства Кода проверяют это правило по-другому. Анализ может привести к различным результатам.

Совет

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

Обменивайтесь сообщениями в отчете

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

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

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

Группа: проект Кода
Категория: необходимый
Категория AGC: необходимый
Язык: C90, C99

Введенный в R2014b