exponenta event banner

MISRA C:2012 Dir 4.11

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

Описание

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

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

Объяснение

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

Внедрение Polyspace

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

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

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

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

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

    • sqrt

    • tan

    • pow

    • log

    • log10

    • fmod

    • acos

    • asin

    • acosh

    • atanh

    • или atan2

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

Совет

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

Поиск неисправностей

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

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

Группа: Дизайн кода
Категория: Обязательно
Категория СМЖЛ: требуется
Представлен в R2014b