cppcheck 错误与我看到的不符

Posted

技术标签:

【中文标题】cppcheck 错误与我看到的不符【英文标题】:cppcheck error doesn't match what I see 【发布时间】:2017-03-22 19:14:03 【问题描述】:

我运行 cppcheck 并收到以下消息: "成员变量 'i_refvec::data_' 未在 'i_refvec::operator='。”

代码来自模板数值工具包 (TNT)。我认为我看到这些变量正在初始化,但我仍然收到投诉。

帮助?

相关函数(从第 155 行开始)如下:

template <class T>
i_refvec<T> & i_refvec<T>::operator=(const i_refvec<T> &V)

  // Do nothing if we're pointing at ourselves
    if (this == &V)
        return *this;

    if (ref_count_ != NULL)
    
        (*ref_count_) --;
        if ((*ref_count_) == 0)
            destroy();
    

    data_ = V.data_;
    ref_count_ = V.ref_count_;

    if (V.ref_count_ != NULL)
        (*(V.ref_count_))++;

    return *this;

【问题讨论】:

【参考方案1】:

我是一名 Cppcheck 开发人员。

这对我来说也像是误报。我想知道您是否可以将其简化为重现问题的简短示例代码..然后在此处报告票证:http://trac.cppcheck.net。

误报通常是由一些微小的细节引起的。可能在别的地方。因此很难说为什么这会失败。

如果您想创建一个重现误报的示例代码,最好减少您的原始代码(删除包含、类、方法等)。

【讨论】:

TNT 和 cppcheck 似乎不能很好地配合使用,可能是因为 TNT 的模板太重了? (TNT 是所有标题,没有 cpp 代码)。它还声称成员对象没有被初始化。我会尝试为您收集一些示例。

以上是关于cppcheck 错误与我看到的不符的主要内容,如果未能解决你的问题,请参考以下文章

无法识别来自命令行的 cppcheck

在声纳中使用 C++ 社区插件的问题。 Cppcheck 不起作用

cppcheck -i 开关(忽略)被忽略

Cppcheck : mismatchAllocDealloc 错误

cppcheck 输出路径似乎错误

如何使 cppcheck 在错误时停止