8

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

4

2 回答 2

13

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

添加新规则集

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

选择您的规则并设置为错误

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

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

为您的项目选择“作为错误”规则集并应用。

选择为错误规则集并应用

于 2013-01-16T23:43:54.610 回答
9

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

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

对于 Visual Studio 2008,我们添加了一个新的 MSBuild 属性,使您可以轻松地将所有代码分析警告视为构建错误。例如,如果您想在夜间团队构建期间强制触发任何代码分析规则来中断构建,而无需为每个规则单独设置,这可能很有用。

要使用,只需将属性添加到项目文件(或公共目标文件)并将其设置为 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>

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

于 2015-08-20T15:51:22.183 回答