将警告视为错误无效

时间:2013-01-16 19:25:57

标签: visual-studio-2010 code-analysis compiler-warnings fxcop

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

2 个答案:

答案 0 :(得分:13)

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

Add new Rule Set

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

Select your rules and set to error

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

Set name and apply to solution

选择项目的“As Error”规则集并应用。

Select as error ruleset and apply

答案 1 :(得分: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>

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