Описание
Недопустимое использование стандартной целочисленной стандартной программы библиотеки происходит, когда вы используете недействительные аргументы с целочисленной функцией от стандартной библиотеки. Этот дефект берет:
Преобразование символов
toupper, tolower
Символьные проверки
isalnum, isalpha, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit
Целочисленное деление
div, ldiv
Абсолютные значения
abs, labs
Фиксация
Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Комментарии.
Пример - абсолютное значение большого отрицания
#include <limits.h>
#include <stdlib.h>
int absoluteValue(void) {
int neg = INT_MIN;
return abs(neg);
}
Входным значением к abs
является INT_MIN
. Абсолютным значением INT_MIN
является INT_MAX+1
. Этот номер не может быть представлен типом int
.
Исправление — изменяет входной параметр
Одно возможное исправление должно измениться, входное значение, чтобы соответствовать возвратило тип данных. В этом примере измените входное значение на INT_MIN+1
.
#include <limits.h>
#include <stdlib.h>
int absoluteValue(void) {
int neg = INT_MIN+1;
return abs(neg);
}