はい、少なくともVS2010では可能ですが、VS2012でも同じように機能すると思います。
私はこのブログ投稿で説明されているように詳細に従いました、そしてそれは私にとって素晴らしい働きをしました。
VS2010にも問題があり、最初に構築されたプロジェクト用に構成されたルールセットが、構成内容に関係なく、すべてのプロジェクトのルールセットになりました。単体テストプロジェクトのルールを緩和したため、これはうまくいきませんでした。VS2012で修正されたと思いますが、そうでない場合は、この手順で回避策も提供されます。
アップデート
ブログはもう存在しません。以下をhttp://web.archive.org/web/20140531211137/http://kentb.blogspot.co.nz/2011_01_01_archive.htmlで見つけました。
サンプルソリューションは、https://onedrive.live.com/?cid = 328ba01b2a22de20&id = 328BA01B2A22DE20 %21178&authkey =!ALAeFtsfPqgdMCkにあります。
すべてのクレジットはケントブオゴールに行きます
VisualStudio2010を使用しないコード分析
この投稿では、VisualStudio2010のコード分析をビルドに統合する方法について段階的に説明します。まだ読んでいない場合は、最初の投稿を読んで、達成されることの概要を確認してください。必要に応じて、以前の投稿の手順に従って、VisualStudio2008のコード分析を統合できます。Visual Studio 2010がインストールされたマシンが必要ですが、正しくセットアップされていれば、これはプロジェクトをビルドするための要件ではありません。VisualStudioがデフォルトの場所にインストールされていると思います-必要に応じてパスを調整します。
次のディレクトリ構造から始めていると仮定します。
Project
Lib
Src
ステップ1:コード分析ツールをコピーする
の内容全体をにコピーC:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
しLib\Code Analysis
ます。
の内容全体をにコピーC:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\CodeAnalysis
しLib\Code Analysis
ます。
次のファイルを次の場所にコピーしますLib\Code Analysis
。
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualC\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.Dll
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.CodeAnalysis.Sdk\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
C:\Program Files\Microsoft Visual Studio 10.0\DIA SDK\bin\msdia100.dll
C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dll
C:\Program Files\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcr100.dll
ステップ2:コード分析ターゲットファイルを作成する
というファイルを作成し、ディレクトリCodeAnalysis.targets
に配置しますSrc
。このファイルの内容の開始点は次のとおりです。必要に応じて、必要に応じて微調整する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--
Inject our own target before the code analysis runs.
-->
<RunCodeAnalysisDependsOn>
ConfigureCodeAnalysis;
$(RunCodeAnalysisDependsOn);
</RunCodeAnalysisDependsOn>
<!--
Ensure code analysis is run
-->
<RunCodeAnalysis>True</RunCodeAnalysis>
<!--
Set this to false if you don't want all code analysis violations to be treated as errors.
-->
<CodeAnalysisTreatWarningsAsErrors>True</CodeAnalysisTreatWarningsAsErrors>
<!--
This should be set to resolve to the Lib directory, which must contain the code analysis tooling.
-->
<PathToLib>$(MSBuildProjectDirectory)\..\..\Lib\</PathToLib>
<!--
This should be set to resolve to the directory containing this targets file.
-->
<PathToTargets>$(MSBuildProjectDirectory)\..\</PathToTargets>
<!--
Setting these properties is required in order for the code analysis targets to execute correctly.
Without setting these, it will look for the tooling under default installation directories instead
-->
<CodeAnalysisTargets>$(PathToLib)\Code Analysis\Microsoft.CodeAnalysis.Targets</CodeAnalysisTargets>
<CodeAnalysisPath>$(PathToLib)\Code Analysis</CodeAnalysisPath>
<!--
Assign default code analysis rules
-->
<CodeAnalysisRuleSet>$(PathToTargets)CodeAnalysis.Default.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<UsingTask AssemblyFile="$(PathToLib)\MSBuildSdcTasks\Microsoft.Sdc.Tasks.dll" TaskName="StringComparison"/>
<Target Name="ConfigureCodeAnalysis">
<!--
Assume that any projects with ".Tests" in their names are test projects
-->
<StringComparison Comparison="Contains" Param1="$(AssemblyName)" Param2=".Tests">
<Output TaskParameter="Result" PropertyName="IsTestProject"/>
</StringComparison>
<!--
Assign different rules for test projects (more relaxed)
-->
<CreateProperty Condition="$(IsTestProject)" Value="$(PathToTargets)CodeAnalysis.Tests.ruleset">
<Output TaskParameter="Value" PropertyName="CodeAnalysisRuleSet"/>
</CreateProperty>
</Target>
</Project>
ステップ3:ルールセットを作成する
CodeAnalysis.Default.ruleset
と呼ばれるファイルをディレクトリに作成CodeAnalysis.Tests.ruleset
しますSrc
。を選択すると、VisualStudio2010でこれらのファイルを作成できますFile / New / File / Code Analysis Rule Set
。または、ダウンロードの例からファイルをコピーすることもできます。
ステップ4:関連するプロジェクトのコード分析を有効にする
コード分析が必要なすべてのプロジェクトについて、.csprojファイルを開き、次をインポートする前に以下を挿入しますMicrosoft.CSharp.targets
。
<Import Project="..\CodeAnalysis.targets" />
注:これは、Microsoft.CSharp.targetsのインポート後ではなく、インポート前に挿入することが非常に重要です。
ステップ5:必要に応じて微調整
CodeAnalysis.targets
有効なルール、ルールのセットが使用される条件などを変更するために、、、CodeAnalysis.Default.ruleset
およびファイルを微調整することをお勧めします。CodeAnalysis.Tests.ruleset
前述のように、VS2010を使用して.ruleset
ファイルを作成および編集できます。
これで、コード分析がプロジェクトに統合されました。Visual Studio、コマンドライン、ビルドサーバーなど、どこからビルドするかは関係ありません。すべての場合において、コード分析はプロジェクトに対して実行されます。これらすべての動作を示すサンプルソリューションを以下からダウンロードできます。
トラブルシューティング
を取得した場合は、ビルドマシンにCA0001 Phx.FatalError
を登録する必要があります。msdia100.dll
regsvr32 msdia100.dll
ビルドユーザーが十分な権限を持っている場合は、これをビルドスクリプトに組み込むこともできます。