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