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

カスタム設定のプロファイルパスを指定しない場合、TeamCity はコードインスペクションのデフォルト設定を使用します。ただし、これらを自分の / チームの基準に一致するように構成できます。これは、ReSharper オプションのページで行います。インスペクションの重大度を変更できます。たとえば、String.IsNullOrEmpty を使用する場合の重大度を変更できます。

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

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

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

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

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

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

この出力はうまくフォーマットされた移動可能な画面です。これにより、異なるファイルを調べて、TeamCity が重複として検出した内容(スペース制限のために以下にサイズ変更されています)を並べて比較することができます。

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

要約
JetBrains ツールを使えば、ビルドプロセスにコード品質検出機能を追加して、製品コードに含まれるべきでないものがある場合に、ビルドが失敗するようにするのは、驚くほど簡単です。
関連ページ:
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...
InspectCode コマンドラインツール
ReSharper の最も注目すべき機能の 1 つであるコードインスペクションは、IDE を開かなくても使用できます。無料のクロスプラットフォームコマンドラインツールの InspectCode では、ReSharper のインスペクションのすべてを適用するために、少なくとも 1 つのパラメーター (ソリューションファイル) が必要です。InspectCode を実行する ReSharper コマンドラインツールをダウンロードします。ダウンロードボタンの横にあるセレクタを使用して、オペレーティングシ...
ReSharper 設定の管理と共有
ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: シンボルのアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReSh...
リソースファイルに多数のエントリを扱う
リソースファイル内の大量のデータを管理するのは難しい場合がありますが、ReSharper は、ローカライズされたデータをサポートするために最善を尽くします。最初に気付くのは、ファイル構造ウィンドウでの .resx ファイルのサポートです。文字列識別子とその内容の便利なリストが表示されます。ReSharper には、デフォルトのカルチャでリソースを宣言するのを忘れた場合など、リソースエントリに関する問題を特定するのに役立つコードインスペクションも含まれています。ReSharper のナビゲーション機能...
可能な NullReferenceExceptions を検出する
null チェックは、.NET 開発で最も一般的な操作の 1 つです。ReSharper は、潜在的に null になる可能性のあるエンティティを扱う開発者に特別なサポートを提供することによって、null チェックを真剣に受け入れるツールの 1 つです。ReSharper が行う最初のことは、が発生する可能性を検出することです。例: 最初に存在するかどうかを確認せずに XML 属性の値にアクセスしようとします。var xe = XElement.Parse(