C# 警告为错误-不适用于Stylecop警告
我想将Stylecop警告视为错误,但它对我不起作用 我的项目被配置为将警告视为错误,如果我使用真正的“编译器警告”进行构建,它确实会显示编译器错误。但是有了“Stylecop警告”,它只会显示编译器警告 因此,当出现Stylecop警告时,我对TeamCity的签入并没有破坏CI构建 我将VS2013与Stylecop 4.7.49一起使用 我的设置:C# 警告为错误-不适用于Stylecop警告,c#,visual-studio,visual-studio-2013,compiler-warnings,stylecop,C#,Visual Studio,Visual Studio 2013,Compiler Warnings,Stylecop,我想将Stylecop警告视为错误,但它对我不起作用 我的项目被配置为将警告视为错误,如果我使用真正的“编译器警告”进行构建,它确实会显示编译器错误。但是有了“Stylecop警告”,它只会显示编译器警告 因此,当出现Stylecop警告时,我对TeamCity的签入并没有破坏CI构建 我将VS2013与Stylecop 4.7.49一起使用 我的设置: 项目->属性->构建 警告级别:4 抑制警告:1591 将警告视为错误:全部 项目->样式表设置->选项 将违规行为视为错误:已选中
- 项目->属性->构建
- 警告级别:4
- 抑制警告:1591
- 将警告视为错误:全部
- 项目->样式表设置->选项
- 将违规行为视为错误:已选中
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,17,9,30): error CS0168: Warning as Error: The variable 'nobodyLovesMe' is declared but never used
========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 skipped ==========
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(7,1): warning : SA1300 : CSharp.Naming : method names begin with an upper-case letter: fff.
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,1): warning : SA1122 : CSharp.Readability : Use string.Empty rather than "".
========== Build: 1 succeeded, 0 failed, 3 up-to-date, 0 skipped ==========
不破坏构建的示例代码(尽管我希望如此),包含stylecop警告:
生成输出:
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,17,9,30): error CS0168: Warning as Error: The variable 'nobodyLovesMe' is declared but never used
========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 skipped ==========
1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(7,1): warning : SA1300 : CSharp.Naming : method names begin with an upper-case letter: fff.
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,1): warning : SA1122 : CSharp.Readability : Use string.Empty rather than "".
========== Build: 1 succeeded, 0 failed, 3 up-to-date, 0 skipped ==========
修改csproj文件以添加以下配置:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
...
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
</PropertyGroup>
调试
...
假的
另请参见该部分,它解释了为什么某些警告无法升级为错误。如果您使用StyleCop.MSBuild numget包在项目上启用样式cop。 要将stylecop警告作为错误启用,只需添加另一个nuget包 StyleCop.Error.MSBuild()
谢谢借助StyleCop.MSBuild NuGet包,您可以轻松地使用MSBuild配置StyleCop,使警告显示为错误。 您必须修改项目文件,如下所示
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
</PropertyGroup>
<CollectionProperty Name="GeneratedFileFilters">
<Value>\.g\.cs$</Value>
<Value>\.generated\.cs$</Value>
<Value>\.g\.i\.cs$</Value>
<Value>TemporaryGeneratedFile_.*\.cs$</Value>
</CollectionProperty>
请参阅此处的完整帖子。
:
真的
这是一个编译器设置。改为使用属性。谷歌首先攻击了btw。更糟糕的是,似乎有时警告会被视为错误,但不会在VS“错误列表”窗口中报告。
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<!-- Ideally this is always enabled, but that tends to hurt developer productivity -->
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>