8

私は、(</sarcasm>168 個のプロジェクトを含む Visual Studio 2012 ソリューションに取り組んでいる幸せな状況にいます。

そのうちの約 15 で作業を行っており、その他の作業は行っていません。

ソリューション全体でコード分析を実行すると、23 分間実行されます。これは少し長いです.....

しかし、チェックインのたびに、どのプロジェクトが変更されたかを把握して、それらのプロジェクトのみのコード分析を実行できるようにするのも面倒です。

問題は、コード分析を実行するプロジェクトのカスタム セットを作成できるかどうかです。

4

3 に答える 3

1

ソリューション アプローチを再検討したくない場合 (他の方法と同様に強くお勧めします)、複数のソリューション ビルド構成は、さまざまなシナリオでコード分析用のさまざまなアセンブリ セットを有効にする最も簡単な方法です。たとえば、次のような一連のソリューション構成を検討したい場合があります (「コア」プロジェクトは、通常取り組んでいる 15 のプロジェクトです)。

  1. デバッグ
    • すべてのプロジェクト: コンパイル (デバッグ構成) と静的分析の実行 (VS コード分析/FxCop、StyleCop、アーキテクチャ ルールの適用など)
  2. デバッグコア
    • コア プロジェクト: コンパイル (デバッグ構成) と静的解析の実行
    • その他のプロジェクト: 静的解析をコンパイルまたは実行しないでください
  3. DebugCompileOnlyCore
    • コア プロジェクト: コンパイル (デバッグ構成) を行いますが、静的解析は実行しません。
    • その他のプロジェクト: 静的解析をコンパイルまたは実行しないでください
  4. DebugNoBuild
    • すべてのプロジェクト: 静的解析をコンパイルまたは実行しないでください
  5. リリース
    • すべてのプロジェクト: コンパイル (リリース構成) および静的解析の実行 (リリース構成に対して実行することを選択した場合)

(プロジェクト構成に少し凝りたい場合は、プロジェクト レベル構成の関連部分をインポートされた MSBuild .targets ファイルに外部化すると、特に影響を受けるプロジェクトの数を考えると、これらすべての管理がはるかに簡単になります。)

ほとんどの開発者はおそらく、日常的なアクティビティのほとんどで DebugNoBuild または DebugCompileOnlyCore の下で作業することを選択し、コミット前のルールの検証には Debug または DebugCore (適切と思われる場合) を選択できます。通常、継続的インテグレーション ビルドには完全なデバッグ (関連するすべての静的分析を含む) を使用することをお勧めしますが、完全な分析の期間を考えると、それは実際的ではない場合があります。CI を使用している場合は、CI ビルドに DebugCore (または、すべてをコンパイルするが、コア プロジェクトの静的解析のみを実行するバリアント) を使用してから、毎日よりも頻繁に実行される定期的にスケジュールされたビルドを追加するのが最適な場合があります (たとえば、すべて1 時間または 2 時間) を使用して、完全なデバッグ構成を使用するビルドを実行します。

于 2013-11-01T13:00:42.497 に答える
0

外部ビルド ファイル (build.proj - ソリューションのディレクトリ) から簡単に実行できます。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Build">
    <MSBuild Projects="TestSolution.sln" Properties="RunCodeAnalysis=false"></MSBuild>
    <MSBuild Projects="ClassLibrary1\ClassLibrary1.csproj" Targets="RunCodeAnalysis"></MSBuild>
    <MSBuild Projects="ClassLibrary2\ClassLibrary2.csproj" Targets="RunCodeAnalysis"></MSBuild>
  </Target>
</Project>
  1. コード分​​析なしでビルドします。
  2. 選択したプロジェクトだけで分析を実行します。
  3. 各開発者が異なるプロジェクトのセットを使用する場合に備えて、分析するプロジェクトのリストで別のスクリプトを参照できます。これはVCSには入りません。

外部ツールを使用して Visual Studio 内からスクリプトを実行することができます (チームがシェルを好まない場合)。

お役に立てれば。

于 2013-11-02T13:57:17.593 に答える