重复的“if”条件¶
ID: js/duplicate-condition
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- maintainability
- correctness
- external/cwe/cwe-561
Query suites:
- javascript-security-and-quality.qls
如果“if” - “else if” 链中的两个条件相同,则第二个条件将永远不会成立。这很可能表明存在一个复制粘贴错误,其中第一个条件被复制,然后没有被正确调整。即使重复是故意的(例如依赖于不确定性或副作用),这样的代码也会令人困惑,应该避免。
建议¶
检查这两个条件,找出它们原本应该检查的内容。如果条件和依赖于它们的两个分支都相同,则第二个分支是重复代码,可以删除。否则,需要调整第二个条件。
示例¶
在下面的示例中,函数controller
检查其参数msg
以确定它应该执行什么操作。但是,“else if” 中的比较与“if” 中的比较相同,因此该分支将永远不会被执行。
function controller(msg) {
if (msg == 'start')
start();
else if (msg == 'start')
stop();
else
throw new Error("Message not understood.");
}
显然,“else if” 分支应该将msg
与'stop'
进行比较
function controller(msg) {
if (msg == 'start')
start();
else if (msg == 'stop')
stop();
else
throw new Error("Message not understood.");
}