CodeQL 文档

重复的“if”分支

ID: go/duplicate-branches
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
   - correctness
   - external/cwe/cwe-561
Query suites:
   - go-security-and-quality.qls

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

如果“if”语句的“then”和“else”分支相同,则表明存在复制粘贴错误,其中第一个分支被复制,然后没有正确调整。

建议

检查这两个分支,以确定要执行的操作。如果这两个分支及其检查的条件都相同,则第二个分支是可以删除的重复代码。如果这两个分支确实要执行相同的操作,则只使用一个分支来检查两个条件的析取可能会更清晰。

示例

下面的示例显示了一个错误的绝对值函数实现,它检查其参数的符号,但随后返回相同的值,而不管检查的结果如何

package main

func abs(x int) int {
	if x >= 0 {
		return x
	} else {
		return x
	}
}

显然,“else”分支应该返回 -x

package main

func absGood(x int) int {
	if x >= 0 {
		return x
	} else {
		return -x
	}
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私