问题标签 [pvs-studio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pvs-studio - 范围分析和 V3022
考虑下面的代码:
预计前两个循环仅打印出第三和第二大整数。最后一个循环有一个错误,i
会溢出int.MinValue
并导致无限循环。
运行它会给出预期的输出。
PVS Studio 发出三个警告:
V3022 表达式 'i < int.MaxValue' 始终为真。
V3022 表达式 'i <= int.MaxValue - 1' 始终为真。
V3022 表达式 'i <= int.MaxValue' 始终为真。
正确报告了最后一个循环中的错误,但前两个警告是误报。
c++ - 使用了危险的幻数 N
PVS-Studio,静态代码分析器,用于以下代码
报告:
V112使用的危险幻数
4
:...t const n = 4;. test.cpp 3
尽管 PVS-Studio 与 Visual Studio 2017 项目一起使用,并且对 32 位和 64 位都报告了相同的警告,但分析器 AFAIU 并未考虑这些构建配置。
我本来希望能更好地分析上下文并将上面的代码视为等同于这个
PVS-Studio 不为其发出任何诊断。
在上面的情况下,这个危险的魔法数字 N 使用过,误报吗?
上面两个代码示例没有被分析为等效的原因是什么?
c++ - 表达式 'i < 0' 始终为假
对于以下代码段:
PVS-Studio 分析记录第一个条件的警告i < 0
,如预期的那样:
V547 Expression 'i < 0' is always false. Unsigned type value is never < 0. test_cpp_vs2017.cpp 19
为什么 PVS 不发出任何关于第二个警告的警告i != -1
,例如,报告它始终为真的可疑情况?
pvs-studio - 独立 PVS-Studio(免费)仍然计算剩余点击次数
我正在使用 PVS-Studio Standalone 版本 6.16.222236。我已经使用 How-To-Use-PVS-Studio-FREE.exe 在我的所有文件中添加了特殊注释,所以我认为我可以免费使用它而没有任何试用限制。
但是经过几次运行后,我看到了红色文本:“剩余点击次数:0(可以扩展)”并且我无法单击任何诊断。
我的问题是:这正常吗?所以 PVS-Studio 会免费分析一切,但点击次数仍然有限?我并不是说它不好或什么,我只是想知道这是否是预期的行为。
pvs-studio - 未安装 c++ 时启动时出错
启动 VS 15.3.1 时,我在活动日志中看到此错误。它似乎与 PVS 工作室有关,因为当我禁用扩展时它就消失了。
我只使用 C#,所以我没有安装任何 c++ 模块。单击确定消息后,我没有遇到任何其他异常。
我尝试禁用所有其他第三方扩展并重新启动 VS,并在启动时打开以下窗口:
- C# 交互式
- 错误列表
- 任务列表
- 命令窗口
- 输出
- 测试资源管理器
- 解决方案资源管理器
- 团队资源管理器
- 首页
然后启用 PVS 并重新启动 VS:我收到错误消息
“Visual C++ 项目系统包”未正确加载。
然后我删除了组件缓存文件夹:我仍然收到错误。
使用ClearMEFComponentCache清理。重新启动PVS,现在我无法重现。
其他信息:我已经升级到 VS 15.3.2
- 在运行 ClearMEFComponentCache 之前,我有几个文件夹
%appdata%\Microsoft\VisualStudio
,即14.0
,15.0
以及15.0_aaea4580
文件ComponentCache
夹所在的文件夹。现在我只有15.0_aaea4580
文件夹。 - VS 在管理员模式下打开。
c++ - 误报 V595 在针对 nullptr 进行验证之前使用了“_parent”指针
我将 PVS-Studio 用于我的项目Torrent File Editor。有一个误报。这里没有真正的问题,但我得到这样的错误:
torrent-file-editor/abstracttreenode.h:138: error: V595 The '_parent' pointer was utilized before it was verified against nullptr. Check lines: 138, 139.
代码片段:
这里 Q_ASSERT 只是 Debug 版本检查。在 Release 版本中不执行此类检查。对于 Release,我使用它_parent ? ... : ...
来防止可能的崩溃。因此,在 Debug 版本中重复检查是完全可以的。
我用特别的评论来抑制这种误报。所以这不是问题,但认为 PVS-Studio 应该处理这种情况。
pvs-studio - PVS-Studio 在项目文件夹中创建临时文件
每次运行后,PVS-Studio 都会在项目文件夹中为每个选中的 cpp 文件创建一个 .cpp.PVS-Studio.cfg 文件。
并且在检查完成后它不会删除它们。手动或通过 git checkout 删除它们有点烦人。PVS-Studio 是否可以配置为在其他地方创建这些文件?
command-line - pvs-studio-analyzer 中 -a 选项的可能值
选项允许哪些值-a
?文档没有足够的信息。它只说:
-a 模式,--分析模式模式(默认值:4)
MODE 定义警告的类型。4 - 一般分析。
我试图在 pvs 网站上查找。但是什么也没发现。
c++ - 误报警告 PVS Studio:V821 性能下降。'rhs' 变量可以在较低级别的范围内构造
PVS Studio 6.17 (Windows 7, 64Bit, VS2017, C++-03) 似乎在遵循精简代码时给出错误警告
PVS工作室的警告是
V821 性能下降。'rhs' 变量可以在较低级别的范围内构造。
由于s
是std::stack
-type,而对应的算法要求rhs
-element从栈中弹出,看来PVS-Studio是错误的。我错过了什么?
顺便一提:
PVS Studio 消息中有错字:
参考
pvs-studio - 如何将 pvs-studio 正确集成到内核模块 makefile 中?
我将使用 pvc-studio 检查简单的开源驱动程序,但到目前为止它还没有成功。我的系统是 Debian 4.6.0-amd64。我正在使用本机 x86_64 gcc 编译器。
使用命令运行
打印出来No compilation units found
。
我尝试将调用嵌入到makefile中,如下所示:
结果,我收到了许多与内核头文件相关的没有此类文件或目录的错误消息。
我的 .cfg 文件:
我做错了什么?如何正确执行?