将警告视为错误无效
Posted
技术标签:
【中文标题】将警告视为错误无效【英文标题】:Treat Warnings as Errors has no effect 【发布时间】:2013-01-16 19:25:57 【问题描述】:在 Visual Studio 的项目设置中,我已将“将警告视为错误”设置为“全部”。 警告级别设置为 4。 我通过故意引入违反 CA1305 的代码对此进行了测试,但它成功构建(和重新构建),返回警告。 我所期望的是构建会失败并且会返回一个错误。是不是我的理解错了?
【问题讨论】:
您是否有任何pragmas
明确禁用该警告?
【参考方案1】:
代码分析使用不同的机制将警告视为错误。要这样处理代码分析警告,请将新的代码分析规则集添加到您的解决方案中。为此,请右键单击您的解决方案并选择“添加新项目...”。搜索“规则集”并选择添加新的“代码分析规则集”。给它起任何你想要的名字。
在规则集编辑器中,选择要包含在项目中的规则并将它们设置为错误。您可以选择哪些规则被视为错误,哪些被视为警告。
在代码分析规则集属性窗口中设置规则集的名称并保存。然后打开Analyze->Configure Code Analysis for Solution
菜单项。
为您的项目选择“作为错误”规则集并应用。
【讨论】:
【参考方案2】:您可以在您的 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>
这可以与<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
结合使用,对StyleCop警告有同样的效果。
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面更改meta.stackexchange.com/questions/8231/…,则仅链接答案可能会失效 知道为什么这不适用于类库,但适用于 ms 测试项目?两个项目中完全相同的配置相同的代码....但 CA 警告不会破坏类库项目构建... 您是否确实在类库属性中为所需配置(调试/发布)启用了 CA?指定的规则集实际上有警告吗?并且您仔细检查了 *.csproj 文件中的拼写错误?否则,不,不知道。对不起。我在 VS/TFS 2010、VS/TFS 2013、VS/TFS 2015 中的各种 *.csproj 中都使用了它,并且该类型似乎从未影响这些设置。 PS:构建本身(创建程序集)不受影响,因为它是由编译器执行的。然而,在编译器运行“FxCop.exe”之后,它会产生 CA 警告/错误。这反过来又会停止构建过程。 对我来说,我只需要将新的布尔值添加到单个“全局”属性组中。希望这不是过于简单化。以上是关于将警告视为错误无效的主要内容,如果未能解决你的问题,请参考以下文章
PHP嵌套foreach()给出警告:为foreach()提供的参数无效
[Amazon](500310) 无效操作:函数弧度(文本)不存在