Оператор сдвига на отрицательной величине
Этот дефект происходит, когда поразрядный сдвиг используется на переменной, которая может иметь отрицательные величины.
Сдвиги на отрицательных величинах перезаписывают знаковый бит, который идентифицирует номер как отрицательный. Операция сдвига может привести к неожиданным значениям.
Фиксация зависит от первопричины дефекта. Часто детали результата (или подсказки исходного кода в Polyspace, когда Вы Кодируете) показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают эту историю события, можно искать предыдущие ссылки переменных, относящихся к дефектному использованию, щелкают правой кнопкой по опциям по исходному коду и находят связанные события. См. также Интерпретируют Результаты Bug Finder в Пользовательском интерфейсе Рабочего стола Polyspace или Интерпретируют Результаты Bug Finder в Polyspace доступ к веб-интерфейсу.
Чтобы зафиксировать дефект, проверяйте на отрицательные величины перед поразрядной операцией сдвига и выполните соответствующую обработку ошибок.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. См.:
Обратитесь к Результатам Polyspace Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в пользовательском интерфейсе Polyspace.
Обратитесь к Результатам в Polyspace доступ Через Исправления ошибок или Выравнивания, если вы рассматриваете результаты в веб-браузере.
Аннотируйте Код и Скройте Известные или Приемлемые результаты, если вы рассматриваете результаты в IDE.
Группа: числовой |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: SHIFT_NEG |
Удар: низко |
ID CWE: 189 |
Find defects (-checkers)
| Shift operation overflow