Visual Studio のプロジェクト設定で、「警告をエラーとして扱う」を「すべて」に設定しました。警告レベルは 4 に設定されています。CA1305 に違反するコードを意図的に導入してこれをテストしましたが、正常にビルド (および再構築) され、警告が返されます。私が予想していたのは、ビルドが失敗し、エラーが返されることでした。私の理解は間違っていますか?
2 に答える
コード分析では、別のメカニズムを使用して警告をエラーとして扱います。コード分析の警告をそのように処理するには、ソリューションに新しいコード分析ルールセットを追加します。これを行うには、ソリューションを右クリックして、[新しいアイテムを追加...]を選択します。「ルールセット」を検索し、新しい「コード分析ルールセット」を追加することを選択します。好きな名前を付けてください。
ルールセットエディタで、プロジェクトに含めるルールを選択し、それらをエラーに設定します。エラーとして処理するルールと警告として処理するルールを選択できます。
コード分析ルールセットのプロパティウィンドウでルールセットの名前を設定し、保存します。次に、Analyze->Configure Code Analysis for Solution
メニュー項目を開きます。
プロジェクトの「エラーとして」ルールセットを選択して適用します。
ここで説明されているように、csproj ファイルで「CodeAnalysisTreatWarningsAsErrors」プロパティを使用できます。
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 警告に対して同じ効果を持つ と組み合わせて使用できます。