c++ - cppcheck 的棘手情况

标签 c++ cppcheck

我面临的情况是我需要 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 Checking retval_neverused.cpp... [retval_neverused.cpp:13]: (style) Variable 'retVal' is assigned a value that is never used.

我不想为了 cppcheck 添加一些虚拟行打印 retVal。事实上,这可能是我抛出异常并且我不希望异常中有一些微不足道的东西作为 retVal 值的情况。

最佳答案

虽然 CppCheck 有点正确。你根本不需要 retVal 。直接检查 fun2 的返回值:if( -1 == fun2() )

顺便说一句,在条件表达式中分配变量是非常糟糕的做法。这使得在您打算键入 == 但实际上键入了 = 时更难发现拼写错误。

关于c++ - cppcheck 的棘手情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026758/

相关文章:

c++ - 注册一个 C# COM 组件?

c++ - SetWindowsHookEx 没有调用我的回调?

c++ - 将大型单 block 单线程应用程序转换为多线程体系结构的建议?

c++ - 如何将同一个对象传递给另一个对象的另一个方法?

c++ - Cppcheck 说 char[256] 应该在构造函数的初始化列表中初始化

C++ 使用 cppcheck 建议的显式

c++ - cppcheck: header 中的函数定义

c++ - Reader/Writer : multiple heavy readers, 每天只写 1 次

ubuntu - 我从哪里获得 cppcheck codeblocks 插件文件?

c++-cli - C++/CLI 的 Cppcheck 语法错误代码味道