CodeQL 文档

无意义的 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

点击查看 CodeQL 存储库中的查询

以下形式的 switch 语句被认为是无意义的

  1. 没有 case。

  2. 只有 default case。

  3. 只有一个非 default case。

  4. 一个 default case 和一个非 default case。

建议

要么用更简单的控制流结构替换 switch 语句,要么扩展它以处理更多 case。每种无意义的形式都有不同的替换方式。

  1. 如果没有 case,则可以删除 switch 语句。

  2. 如果只有一个 default case,则可以删除 switch 关键字、default 关键字以及随后的冒号。

  3. 如果只有一个非 default case,则可以将 switch 语句转换为 if 语句。

  4. 如果有一个 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 年。

  • ©GitHub, Inc.
  • 条款
  • 隐私