CodeQL 文档

表达式无效果

ID: cpp/useless-expression
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - maintainability
   - correctness
   - external/cwe/cwe-561
Query suites:
   - cpp-security-and-quality.qls

单击查看 CodeQL 仓库中的查询

此规则查找没有副作用(即更改变量值)的表达式,这些表达式在它们的值被忽略的上下文中使用。这些表达式很可能打算作为条件的一部分,但编码不正确。

在大多数情况下,这些都是由于意外使用逗号运算符造成的缺陷。逗号运算符很容易被误用(尤其是在条件语句中),因此最好只在绝对必要时才使用它(例如宏定义)。

建议

确保标记的表达式不是疏忽。为了记录表达式的值是被故意忽略的,您可以将其显式地强制转换为 void

示例

void f(int j) {
	int i=0;
	for(i; i<10, j>0; ++i, --j) { //i < 10 has no effect, since the comma 
	                              //operator only returns the value of the last expression
		/* ... */
	}
}

参考资料

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