V590. Consider inspecting this expression. The expression is excessive or contains a misprint.


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

if (Aa[42] == 10 && Aa[42] != 3)

Условие будет выполнено в том случае, если 'Aa[42] == 10'. Вторая часть выражения бессмысленна. Проанализировав код, можно прийти к одному из двух выводов:

1) Выражение можно упросить. Исправленный код:

if (Aa[42] == 10)

2) Выражение содержит ошибку. Исправленный код:

if (Aa[42] == 10 && Aa[43] != 3)

Рассмотрим практический пример. Здесь ошибки нет, но выражение избыточно, что может затруднять чтение кода:

while (*pBuff == ' ' && *pBuff != '\0')
  pBuff++;

Проверка " *pBuff != '\0' " не имеет смысла. Сокращенный вариант кода:

while (*pBuff == ' ')
  pBuff++;

Согласно Common Weakness Enumeration, потенциальные ошибки, найденные с помощью этой диагностики, классифицируются как CWE-571.

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V590.


Найденные ошибки

Проверено проектов
336
Собрано ошибок
12 743

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;