ReSharper と TeamCity を使用してビルドでコードの問題を検出する
ReSharper の コードインスペクションを TeamCityサーバーのビルドで実行できることをご存知ですか? 実際、ずっと前に TeamCity でこの機能のサポートを追加しましたが、この機能は特に ReSharper ユーザーに広く知られていないようです。 セットアップ自体は非常にシンプルなので、ここで詳しく説明し、さらに便利な機能を追加します。
TeamCity の使用を開始するには、 TeamCity のドキュメント(英語)を学びましょう。
TeamCity での .NET インスペクションの有効化
ReSharper インスペクションをビルドプロセスに追加するだけで、ビルドステップ インスペクション (.NET) が追加されます。 必要なパラメーターは Visual Studio Solution ファイルのみです

カスタム設定のプロファイルパス を指定しない場合、TeamCity はコードインスペクションのデフォルト設定を使用します。 これらを自分自身やチームの基準に合わせて設定できます。 これは ReSharper オプションの ページで行います。 任意のインスペクションの 重大度を変更できます。例えば、 String.IsNullOrEmpty の使用の場合などです:

...そして設定を ソリューションチーム共有レイヤーに保存します。 これにより、設定は {Solution}.sln.DotSettings という名前のファイルに保存され、通常はソース管理にチェックインされるため、ソリューションが Visual Studio で開かれたときに自動的に他のチームメンバーにも適用されます。 この同じ設定ファイルを使って TeamCity 向けのカスタムインスペクション設定を指定できます:

結果の分析
ビルドステップが実行されると、TeamCity はインスペクションの結果を分析するためのナビゲーション可能なレポートを生成します

プロジェクト全体または特定の名前空間についてインスペクションを移動できます。 インスペクションは、 カテゴリ 、Issue Type、右ペインの対応するファイルでグループ化されています。 行番号をクリックして実際のファイルに移動することもできます。 このためには、 Visual Studio 用 TeamCity アドインをインストールした状態で Visual Studio を実行する必要があります(リンクをクリックすると、アドインをダウンロードしてインストールするダイアログが表示されます)。
インスペクションの重大度に基づいて行動を取る
サーバー側でインスペクションを追加する主な利点のひとつは、一定のコード品質を確保し、複数の条件に基づいてビルドプロセスがアクションを実行できるようにすることです。 例えば、警告やエラーが多すぎる場合にビルドを失敗させることもできます。
プロジェクト構成 ウィンドウの ビルドの失敗条件 では、新しい ビルドの失敗 条件を追加できます:

メトリクスの変更で失敗する を選択し、警告またはエラーに基づいてビルドを失敗させるかどうかを指定します。 私たちの場合は、エラーを選択し、エラーが複数ある場合は失敗させます。

インスペクションにビルドのステータスに影響を与えたい場合、つまりビルドに失敗した場合は、警告またはエラーに基づいてのみ行うことができます。 ヒントと提案は使用できません。 そのため、ReSharper でインスペクションの重大度を設定する際には、これを考慮する必要があります。
今度はビルドをやり直すと、エラーの数が 1 より大きいため失敗するはずです。 以下は同じ入力とインスペクションの出力ですが、1 つは Build 失敗条件で実行され、もう 1 つは実行されません。

コピー / 貼り付けコードのチェック
厳密に言えば、これは ReSharper の機能とは関係ありませんが、ビルドプロセスのコード品質について話しているため、TeamCity がコードの重複をチェックできることにもメンションしておきましょう。
前と同じように、コードの複製をアクティブ化するには、新しいビルドステップ、つまり 重複ファインダー (.NET) を追加します。 無視するフォルダー、名前空間、型名、その他のいくつかのオプションを考慮するかどうかを指定できます。

出力はきれいにフォーマットされてナビゲートしやすい画面となり、異なるファイルを順に参照したり、TeamCity が重複と検出した内容を並べて比較できます(下図はスペースの都合でリサイズされています):

そして、予想通り、重複したコードが多すぎるとビルドに失敗する可能性があります

要約
JetBrains ツールを使えば、ビルドプロセスにコード品質検出機能を追加して、製品コードに含まれるべきでないものがある場合に、ビルドが失敗するようにするのは、驚くほど簡単です。