【发布时间】:2018-02-05 12:10:32
【问题描述】:
我将 PVS-Studio 用于我的项目 Torrent File Editor。有一个误报。 Here 没有真正的问题,但我得到这样的错误:
torrent-file-editor/abstracttreenode.h:138: error: V595 The '_parent' pointer was utilized before it was verified against nullptr. Check lines: 138, 139.
代码sn-p:
inline T *sibling(int row) const
{
Q_ASSERT(_parent);
Q_ASSERT(row < _parent->childCount()); // -V595 PVS-Studio
return _parent ? _parent->child(row) : nullptr;
}
这里的 Q_ASSERT 只是 Debug 版本检查。在 Release 版本中不执行此类检查。对于 Release,我使用 _parent ? ... : ... 来防止可能的崩溃。所以在 Debug 版本中检查重复是完全可以的。
我通过特别评论来抑制这种误报。所以这不是问题,但认为 PVS-Studio 应该处理这种情况。
【问题讨论】:
-
它可以与 assert() 一起使用吗?我记得 LLVM 的静态分析器也与 Q_ASSERT 混淆了
-
跟 assert() 一样。
-
如果:
return _parent != nullptr ? _parent->child(row) : nullptr;怎么办? -
不要再工作了。
标签: c++ qt pvs-studio