C# 警告为错误-不适用于Stylecop警告

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 将警告视为错误:全部 项目->样式表设置->选项 将违规行为视为错误:已选中

我想将Stylecop警告视为错误,但它对我不起作用

我的项目被配置为将警告视为错误,如果我使用真正的“编译器警告”进行构建,它确实会显示编译器错误。但是有了“Stylecop警告”,它只会显示编译器警告

因此,当出现Stylecop警告时,我对TeamCity的签入并没有破坏CI构建

我将VS2013与Stylecop 4.7.49一起使用

我的设置:
  • 项目->属性->构建

    • 警告级别: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>