V7018. The expression 'A || (A && B)' is redundant and always evaluates to 'A'.
Анализатор обнаружил выражение, которое можно упростить. Иногда за такой избыточностью кроются логические ошибки.
Рассмотрим пример подозрительного кода:
let firstCond, secondCond, thirdCond;
....
if (firstCond || (firstCond && thirdCond))
....
Это выражение является избыточным. В случае если firstCond имеет значение true, результат проверки этого условия будет всегда истинным независимо от значения thirdCond. Если же firstCond имеет значение false, то значение выражения будет всегда ложно.
Таким образом, выражение firstCond || (firstCond && thirdCond) можно упростить:
if (firstCond)
Возможно, программист ошибся и написал не ту переменную во втором подвыражении. Тогда корректный код может выглядеть так:
if (firstCond || (secondCond && thirdCond))