35

私たちは .NET 4 に移行しており、新しい Design By Contract 機能の実装に非常に関心があります。

私たちが知っているように、Code ContractエンジンにはCode Contract アドイン 代替テキスト
と VS Ultimate または Premium (静的チェック用) のインストールが必要です。

ここに私の質問があります:

  1. CI ビルド サーバー (TeamCity) に VS をインストールせずに、コード コントラクトの書き換えを使用できますか?
  2. コントラクト チェックを実行する msbuild タスクはありますか?
  3. CI ビルドで Code Contract の検証を使用しますか?
4

1 に答える 1

46

CI ビルド サーバー (TeamCity) に VS をインストールせずに、コード コントラクトの書き換えを使用できますか?

はい。ビルド サーバーに CodeContracts をインストールします。(Visual Studio のないマシンへのインストールを拒否する場合は、以下にリストされているファイルとその依存関係をビルド サーバーにコピーするだけです。) インストールが完了すると、%programfiles%\Microsoft\Contracts\ にインストールされた CodeContract ツールが見つかります。置き場。そのディレクトリには、興味のある 4 つの実行可能ファイルがあります。

  1. ccrewrite.exe - バイナリ リライター。これはコンパイル後に実行する必要があります。コントラクトを実行時チェックまたは指定したものに変換します。

  2. ccrefgen.exe - アセンブリと共にコントラクト参照アセンブリを生成できます。これは、他の関係者が使用する dll を出荷する場合に便利です。

  3. cccheck.exe - 静的チェッカー。ビルド サーバーで、コントラクトを含むアセンブリに対してこのツールを実行すると、潜在的な問題が発生したときに警告とメッセージが出力されます。

  4. ccdocgen.exe - コード内のコントラクトから XML ドキュメントを生成します。他の関係者が使用するコントラクトを含む dll を出荷している場合、またはコードの内部ドキュメントが必要な場合に、これを使用することをお勧めします。

コントラクト チェックを実行する msbuild タスクはありますか?

はい。CodeContracts には 2 つの MSBuild タスクが同梱されています。同じ CodeContracts インストール ディレクトリで、MSBuild\[framework version] フォルダーを確認してください。そのディレクトリには、Microsoft.CodeContracts.targets と Microsoft.CodeContractAnalysis.targets という 2 つのファイルがあります。

CodeContracts のドキュメントによると、

msbuild スクリプト拡張 Microsoft .Contract. targets には、ランタイム コントラクト インストルメンテーションと静的検証の手順のための追加のビルド アクションが含まれています。このアプローチの結果、msbuild コマンドを使用してコマンド ラインからビルドするときに、同じ機能を使用できます。VS ユーザー インターフェイスを介して有効化されたコントラクトを使用するプロジェクトまたはソリューションで msbuild を使用すると、VS での対応するビルドと同じアクションが実行されます。

ご覧のとおり、MSBuild ターゲットを介してツールを CI ビルドに統合することが可能であり、サポートされています。

CI ビルドで Code Contract の検証を使用しますか?

警告/メッセージを使用した静的チェックを意味すると仮定すると、私はこれを個人的に行いましたが、大きなプロジェクトではこれを行っていません。

これが役立つことを願っています!

コマンド ライン ツールの説明については、 Jon Skeet のC# In Depthブックを参照してください。

于 2010-08-31T20:24:54.067 に答える