CodeQL 文档

缺少返回值语句

ID: cpp/missing-return
Kind: problem
Security severity: 
Severity: error
Precision: high
Tags:
   - reliability
   - readability
   - language-features
   - external/jsf
Query suites:
   - cpp-security-and-quality.qls

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

此规则查找非 void 函数,其执行路径没有通过显式的 return 语句返回。在这种情况下,返回值是未定义的。例如,在 x86 的 cdecl 调用约定中,如果函数的返回值类型不是浮点数,并且可以放入机器字长中,则返回值将是函数返回时 AX/EAX 寄存器中的值。

警告:此检查是近似值,因此某些结果可能不是程序中的实际缺陷。通常,在没有使用所有可能的输入数据运行程序的情况下,无法计算条件语句(如“if”)的实际分支。这意味着无法确定特定语句是否会执行。

建议

确保函数中的所有执行路径都通过显式的 return 语句退出。

示例

int f() {
	...
	if (error) {
		return -1;
	}
	...
	//wrong: no explicit return here, value returned is undefined
}

参考

  • AV 规则 114,联合攻击战斗机空车 C++ 编码标准。洛克希德·马丁公司,2005 年。

  • MISRA C++ 规则 8-4-3,关键系统中 C++ 语言使用指南。汽车工业软件可靠性协会,2008 年。

  • MSDN 库:return 语句 (C++).

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