0

Visual Studio Professional 2012に移行し、コード分析にアクセスできるようになりました。

以前は、FxCopを使用して、のパラメーターを渡しましたSourceControlPath\OurFxCopSharedProject.FxCop。また、CustomDictionary.xmlFxCop.exeを含む(ソース制御された)フォルダーにを追加しました。多くの業界固有の用語を使用し、分析ルールを標準化しているため、これは非常に効果的でした。

VS 2012では、コード分析ディクショナリを各プロジェクトに適用しルールセットをプロジェクトごとに指定する必要があるようです。

既存のプロジェクトと新しいプロジェクトの両方.rulesetCustomDictionary.xml(Microsoftの最小推奨ルールと標準の辞書ではなく)標準にデフォルト設定する方法はありますか?何百ものソリューションとさらに多くのプロジェクトがあります。

4

1 に答える 1

1

はい、少なくとも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\FxCopLib\Code Analysisます。

の内容全体をにコピーC:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\CodeAnalysisLib\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

ビルドユーザーが十分な権限を持っている場合は、これをビルドスクリプトに組み込むこともできます。

于 2012-11-20T22:18:23.657 に答える