cppcheck的棘手情况

bad*_*dri 0 c++ cppcheck

我面临的情况是我需要通过cppcheck但有时会变得棘手.在这种情况下你通常做什么?例如.

#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;
}
Run Code Online (Sandbox Code Playgroud)

我们通常会看到如上所述的代码.cppcheck上面的文件会给出如下输出 -

cppcheck --suppress = redundantAssignment --enable ='警告,样式,性能,可移植性' - inline-suppr --language ='c ++'retval_neverused.cpp检查retval_neverused.cpp ... [retval_neverused.cpp:13] :( style)变量'retVal'被赋予一个从未使用过的值.

我不想仅仅为了cppcheck添加一些虚拟行打印retVal.事实上,它可能是我抛出异常的情况,我不希望异常在其中具有一些微不足道的值作为retVal的值.

Jam*_*mes 6

CppCheck虽然有点儿.你根本不需要retVal.只需fun2直接检查返回值: if( -1 == fun2() )

顺便说一句,在条件表达式中分配变量实际上是不好的做法.它会让你更难找到你打算输入的拼写错误,==但实际打字=.