无意义的 switch 语句¶
ID: cpp/trivial-switch
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- maintainability
- readability
- external/jsf
Query suites:
- cpp-security-and-quality.qls
以下形式的 switch
语句被认为是无意义的
没有 case。
只有 default case。
只有一个非 default case。
一个 default case 和一个非 default case。
建议¶
要么用更简单的控制流结构替换 switch
语句,要么扩展它以处理更多 case。每种无意义的形式都有不同的替换方式。
如果没有 case,则可以删除
switch
语句。如果只有一个 default case,则可以删除
switch
关键字、default
关键字以及随后的冒号。如果只有一个非 default case,则可以将
switch
语句转换为if
语句。如果有一个 default case 和一个非 default case,则可以将
switch
语句转换为if
/else
语句。
示例¶
int f() {
int val = 0;
switch(val) { //wrong, use an if instead
case 0:
//...
default:
//...
}
switch(val) { //correct, has 2 cases and a default
case 0:
//...
case 1:
//...
default:
//...
}
}
参考资料¶
AV 规则 196,联合攻击战斗机空中飞行器 C++ 编码标准。洛克希德·马丁公司,2005 年。