将警告视为错误无效

Mat*_*att 8 code-analysis fxcop visual-studio-2010 compiler-warnings

在我在Visual Studio中的项目设置中,我将"将警告视为错误"设置为"全部".警告级别设置为4.我通过故意引入违反CA1305的代码对此进行了测试,但是它成功构建(和重建),返回警告.我所期望的是构建将失败并返回错误.我的理解错了吗?

jes*_*ing 13

代码分析使用不同的机制将警告视为错误.要对代码分析警告进行处理,请在解决方案中添加新的代码分析规则集.要执行此操作,请右键单击您的解决方案,然后选择"添加新项目...".搜索"规则集"并选择添加新的"代码分析规则集".给它任何你想要的名字.

添加新规则集

在规则集编辑器中,选择要包含在项目中的规则并将其设置为"错误".您可以选择将哪些规则视为错误,将哪些规则视为警告.

选择规则并设置为错误

在"代码分析规则集"属性窗口中设置规则集的名称并保存.然后打开Analyze->Configure Code Analysis for Solution菜单项.

设置名称并应用于解决方案

选择项目的"As Error"规则集并应用.

选择为错误规则集并应用


Til*_*nJH 8

您可以在csproj文件中使用"CodeAnalysisTreatWarningsAsErrors"属性,如下所述:

http://blogs.msdn.com/b/codeanalysis/archive/2007/08/08/_24002800_codeanalysistreatwarningaserrors_2900_-msbuild-property.aspx

对于Visual Studio 2008,我们添加了一个新的MSBuild属性,使您可以轻松地将所有代码分析警告视为构建错误.例如,如果您希望强制解释代码分析规则的任何一次在每晚Team Build期间中断构建而不需要为每个规则单独设置它,那么这可能很有用.

要使用,只需将属性添加到项目文件(或公共目标文件)并将其设置为true:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    <PropertyGroup>
        [...]
        <!-- either here -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        [...]
        <!-- or here ... -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        [...]
        <!-- and here -->
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    [...]
</Project>
Run Code Online (Sandbox Code Playgroud)

这可以与组合使用<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>,这将对StyleCop警告产生相同的效果.