Stylecopの警告をエラーとして扱いたいのですが、うまくいきません。
私のプロジェクトは警告をエラーとして扱うように構成されており、実際の「コンパイラ警告」を使用してビルドすると、実際にコンパイラエラーが表示されます。ただし、「Stylecop警告」では、コンパイラ警告のみが表示されます。
この結果、Stylecopの警告が表示されても、TeamCityへのチェックインでCIビルドが中断されることはありません。
私はStylecop4.7.49でVS2013を使用しています。
プロジェクト->プロパティ->ビルド
プロジェクト-> Stylecop設定->オプション
using System;
namespace CodeUsageTest
{
public class CodeUsage
{
private string fff()
{
int nobodyLovesMe; //CS0168
return "";
}
}
}
ビルド出力:
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 ==========
using System;
namespace CodeUsageTest
{
public class CodeUsage
{
private string fff() //SA1300
{
return ""; //SA1122
}
}
}
ビルド出力:
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 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>
また、自動生成されたファイルを無視するには、以下のようにSettings.StyleCop
ファイルを変更できます。
<CollectionProperty Name="GeneratedFileFilters">
<Value>\.g\.cs$</Value>
<Value>\.generated\.cs$</Value>
<Value>\.g\.i\.cs$</Value>
<Value>TemporaryGeneratedFile_.*\.cs$</Value>
</CollectionProperty>
こちらの投稿全体をご覧ください。 警告をエラーとして扱うようにMSBuildでStyleCopを構成する
StyleCop.MSBuild nugetパッケージを使用して、プロジェクトでスタイル警官を有効にしている場合。スタイルコップの警告をエラーとして有効にするには、別のnugetパッケージStyleCop.Error.MSBuildを追加するだけです( https://www.nuget.org/packages/StyleCop.Error.MSBuild/ )
ありがとう