PVS-Studio检查虚幻项目空指针及逻辑问题
-
PVS-Studio安装须知
安装pvs-studio,注册码:
免费使用注册码:
Name:PVS-Studio Free
SerialNumber:FREE-FREE-FREE-FREE
注意:为了保证UE4能够识别,能够间接集成,最好将安装路径设置为C:\Program Files (x86)\PVS-Studio
-
PVS-Studio虚幻项目使用
虚幻项目静态分析两种方法:
1、使用命令行监控vs编译cl.exe进程或者是独立的分析工具standalone(这个有图形化的界面比较容易操作,建议采用这种方法,图形方式也比较方便).
命令行方式:
1.1 控制台运行 CLMonitor.exe monitor
1.2 控制台运行 CLMonitor.exe analyze -l "D:\UE4.plog"
1.3 在vs的pvs-studio插件中,找到open/save -> open analysis report...,打开之前的文件,就可以看到分析结果。
图形方式:
1.1 开始分析:Tools -> Analyze Your Files... ,选择start monitoring。
1.2 停止分析:选择stop monitoring,等待分析结束,出现结果。
2、间接集成到虚幻UBT编译工具中。
在vs的cs项目右键点击,选择属性 -> 配置属性 -> NMake,添加-StaticAnalyzer=PVSStudio到项目的生成命令行和重新生成命令行(英文对应build和rebuild)。
之后可以看到相应的错误信息。
这里面可能遇到的一个问题是:编译的时候,提示是否有足够的权限访问,这个时候记得改C:\Program Files (x86)\MSBuild的文件夹权限,所有者改为当前用户, 这是虚幻编译存在的问题,另外就是不行就多编译几次也可以。
-
PVS-Studio检查误报排除
目前发现的误报的问题:
1、IsValid(XXX)判断,不能正确检查,还是会报错,说没有判空就引用了,这个需要人工稍微看一眼排查一下。
2、不能准确识别异步回调里面写的没有判空的问题。因为我们大量使用CreateLambda创建异步回调的方法,这些和原来的方法都是写在一块,会被认为是同一个函数内容,所以如果上面判断了为空,回调里面没有判断,也不会报是否有问题。这个更多通过规范来避免。
注意一点:如果要想全面检查所有的错误,需要将项目全部重新生成一次。