V8014. Two 'if' statements have identical conditions. The first 'if' statement contains function return, making the second 'if' redundant, or the code contains a logical error.
Анализатор обнаружил ситуацию, когда then-ветка конструкции if никогда не получит управления. Это происходит из-за того, что ранее уже встречается if с таким же условием, содержащий в then-ветке безусловный return. Это может свидетельствовать как о логической ошибке в программе, так и об избыточной второй конструкции if.
Рассмотрим пример некорректного кода:
if l >= 0x06C0 && l <= 0x06CE {
return true
}
if l == 0x06D5 { // <=
return true
}
if l >= 0x0905 && l <= 0x0939 {
return true
}
if l == 0x06D5 { // <=
return true
}
if l >= 0x0985 && l <= 0x098C {
return true
}
В данном случае условие l == 0x06D5 дублируется, и для исправления кода достаточно убрать одно из них. Однако возможно, что во втором случае проверяемое значение должно отличаться от первого.
Корректный вариант кода:
if l >= 0x06C0 && l <= 0x06CE {
return true
}
if l == 0x06D5 {
return true
}
if l >= 0x0905 && l <= 0x0939 {
return true
}
if l >= 0x0985 && l <= 0x098C {
return true
}