如何在VS2015中启用C / C ++代码分析?

时间:2016-06-20 13:58:48

标签: c++ visual-studio-2015 code-analysis

我正在开发一个C ++库,我想为它启用Visual Studio的静态分析。为了熟悉它,我通读了this walkthrough并开始Code analysis properties page。但是,在我的项目和演练演示项目中,我无法让分析在Visual Studio中工作。具体来说,在演练的这些步骤中:

  
      
  1. 在Solution Explorer中,选择CodeDefects项目。

  2.   
  3. 在“项目”菜单上,单击“属性”。

  4.   
  5. 点击代码分析。

  6.   
  7. 单击“在构建时启用C / C ++的代码分析”复选框。

  8.   

我没有看到第6步中的复选框。我的对话框如下所示:

the walkthrough

此外,运行此命令行(用于演示):

cl /analyze .\Bug.cpp

生成多个代码分析警告,但在Visual Studio中执行代码分析(Analyze,Run Code Analysis,On Solution)在错误列表中根本没有显示任何警告。

我在这里缺少什么?

这是我的MVCE,从{{3}}减去:

  1. 使用Visual Studio 2015 Professional Update 2,创建一个空的C ++项目。

  2. 将项目的配置类型更改为"静态库"。

  3. 右键单击项目的属性,选择代码分析,然后选中"在Build"上启用代码分析的复选框。并选择" Microsoft All Rules"对于当前平台/配置或全部。

  4. 创建" Bug.cpp"并将其内容设置为:

    int path_dependent(int n)
    {
        int i;
        int j;
        if (n == 0)
            i = 1;
        else
            j = 1;
        return i + j;
    }
    
  5. 构建项目。在错误列表中观察C6001没有错误。

  6. 在开发人员提示下,运行命令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
    

0 个答案:

没有答案