【发布时间】:2019-01-03 17:07:45
【问题描述】:
我面临需要通过 cppchecks 的情况,但有时会变得棘手。在这种情况下你一般会怎么做? 例如。
#include<iostream>
using namespace std;
void fun1();
int fun2();
int main()
{
fun1();
}
void fun1()
{
int retVal;
if (-1 == (retVal = fun2()))
{
cout <<"Failure. fun2 returned a -1"<< endl;
}
}
int fun2()
{
return -1;
}
我们通常会看到类似上面的代码。上述文件的 cppcheck 将给出如下输出 -
cppcheck --suppress=redundantAssignment --enable='warning,style,performance,portability' --inline-suppr --language='c++' retval_neverused.cpp 检查 retval_neverused.cpp... [retval_neverused.cpp:13]: (style) 变量 'retVal'被分配了一个 从未使用过的值。
我不想仅仅为了 cppcheck 而添加一些虚拟行打印 retVal。事实上,这可能是我抛出异常并且我不希望异常包含一些微不足道的东西作为 retVal 的值。
【问题讨论】:
-
我没有得到 Q。您在分配值后不要使用
retVal,因此诊断是正确的。现在你可以将代码重写为void fun1() { if (-1 == fun2()) { cout <<"Failure. fun2 returned a -1"<< endl; } }