在我在Visual Studio中的项目设置中,我将“将警告视为错误”设置为“全部”。 警告级别设置为4。 我通过故意引入违反CA1305的代码对此进行了测试,但是它成功构建(和重建),返回警告。 我所期望的是构建将失败并返回错误。我的理解错了吗?
答案 0 :(得分:13)
代码分析使用不同的机制将警告视为错误。要对代码分析警告进行处理,请在解决方案中添加新的代码分析规则集。要执行此操作,请右键单击您的解决方案,然后选择“添加新项目...”。搜索“规则集”并选择添加新的“代码分析规则集”。给它任何你想要的名字。
在“规则集编辑器”中,选择要包含在项目中的规则并将其设置为“错误”。您可以选择将哪些规则视为错误,哪些规则作为警告。
在“代码分析规则集”属性窗口中设置规则集的名称,然后保存。然后打开Analyze->Configure Code Analysis for Solution
菜单项。
选择项目的“As Error”规则集并应用。
答案 1 :(得分:8)
您可以在csproj文件中使用“CodeAnalysisTreatWarningsAsErrors”属性,如下所述:
对于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警告产生相同的效果。