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

dem*_*key 16 c# stylecop compiler-warnings visual-studio visual-studio-2013

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

我的项目被配置为将警告视为错误,如果我使用真正的"编译器警告"构建它确实显示编译器错误.但是通过"Stylecop警告",它只显示编译器警告.

因此,当有Stylecop警告时,我向TeamCity烦恼地签到并不会破坏CI构建.

我正在使用VS2013和Stylecop 4.7.49.

我的设置:

  • 项目 - >属性 - >构建

    • 警告级别:4
    • 抑制警告:1591
    • 将警告视为错误:全部
  • 项目 - >样式设置 - >选项

    • 将违规视为错误:已检查

包含实际编译器警告的示例代码,它正确地破坏了构建:

using System;

namespace CodeUsageTest
{
    public class CodeUsage
    {
        private string fff()
        {
            int nobodyLovesMe; //CS0168
            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建输出:

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 ==========
Run Code Online (Sandbox Code Playgroud)

不破坏构建的示例代码(虽然我想要它),包含stylecop警告:

using System;

namespace CodeUsageTest
{
    public class CodeUsage
    {
        private string fff() //SA1300
        {
            return ""; //SA1122
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建输出:

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 ==========
Run Code Online (Sandbox Code Playgroud)

ken*_*n2k 20

修改csproj文件以添加以下配置:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    ...
    <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

另请参阅此答案,解释为什么某些警告无法提升为错误.