CodeQL 文档

重复的“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

点击查看 CodeQL 代码库中的查询

如果“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.");
}
  • ©GitHub, Inc.
  • 条款
  • 隐私