表达式无效果¶
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
此规则查找没有副作用(即更改变量值)的表达式,这些表达式在它们的值被忽略的上下文中使用。这些表达式很可能打算作为条件的一部分,但编码不正确。
在大多数情况下,这些都是由于意外使用逗号运算符造成的缺陷。逗号运算符很容易被误用(尤其是在条件语句中),因此最好只在绝对必要时才使用它(例如宏定义)。
建议¶
确保标记的表达式不是疏忽。为了记录表达式的值是被故意忽略的,您可以将其显式地强制转换为 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
/* ... */
}
}