我正在开发一个C ++库,我想为它启用Visual Studio的静态分析。为了熟悉它,我通读了this walkthrough并开始。但是,在我的项目和演练演示项目中,我无法让分析在Visual Studio中工作。具体来说,在演练的这些步骤中:
在Solution Explorer中,选择CodeDefects项目。
在“项目”菜单上,单击“属性”。
点击代码分析。
- 醇>
单击“在构建时启用C / C ++的代码分析”复选框。
我没有看到第6步中的复选框。我的对话框如下所示:
此外,运行此命令行(用于演示):
cl /analyze .\Bug.cpp
生成多个代码分析警告,但在Visual Studio中执行代码分析(Analyze,Run Code Analysis,On Solution)在错误列表中根本没有显示任何警告。
我在这里缺少什么?
这是我的MVCE,从{{3}}减去:
使用Visual Studio 2015 Professional Update 2,创建一个空的C ++项目。
将项目的配置类型更改为"静态库"。
右键单击项目的属性,选择代码分析,然后选中"在Build"上启用代码分析的复选框。并选择" Microsoft All Rules"对于当前平台/配置或全部。
创建" Bug.cpp"并将其内容设置为:
int path_dependent(int n)
{
int i;
int j;
if (n == 0)
i = 1;
else
j = 1;
return i + j;
}
构建项目。在错误列表中观察C6001没有错误。
在开发人员提示下,运行命令cl /analyze:only .\Bug.cpp
并观察预期的错误:
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23918 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
Bug.cpp
c:\sources\cppdemo\codedefectsdemo\bug.cpp(9) : warning C6001: Using uninitialized memory 'i'.: Lines: 3, 4, 5, 8, 9
c:\sources\cppdemo\codedefectsdemo\bug.cpp(9) : warning C6001: Using uninitialized memory 'j'.: Lines: 3, 4, 5, 6, 9