1.2.570. Inconsistent Elseif¶
Chaining if/elseif requires a consistent string of conditions. The conditions are executed one after the other, and the conditions shouldn’t overlap.
This analysis reports chains of elseif that don’t share a common variable (or array, or property, etc.. ). As such, testing different conditions are consistent.
<?php
// $a is always common, so situations are mutually exclusive
if ($a === 1) {
doSomething();
} else if ($a > 1) {
doSomethingElse();
} else {
doSomethingDefault();
}
// $a is always common, so situations are mutually exclusive
// although, it may be worth checking the consistency here
if ($a->b === 1) {
doSomething();
} else if ($a->c > 1) {
doSomethingElse();
} else {
doSomethingDefault();
}
// if $a === 1, then $c doesn't matter?
// This happens, but then logic doesn't appear in the code.
if ($a === 1) {
doSomething();
} else if ($c > 1) {
doSomethingElse();
} else {
doSomethingDefault();
}
?>
1.2.570.1. Connex PHP features¶
1.2.570.1.1. Specs¶
Short name |
Structures/InconsistentElseif |
Rulesets |
|
Exakat since |
1.4.3 |
PHP Version |
All |
Severity |
Major |
Time To Fix |
Slow (1 hour) |
Precision |
Very high |
Available in |