重複ファインダー (ReSharper)
ReSharper コマンドラインツールに基づく重複ファインダー (ReSharper) ビルドランナーは、同様のコードフラグメントをキャッチし、Visual Studio 2003, 2005, 2008, 2010, 2012, 2013,, 2015 ソリューションで検出された C# および Visual Basic .NET コードの反復ブロックに関するレポートを提供することを目的としています。
一般的なビルドステップの設定の説明については、ビルドステップの設定を参照してください。このステップをコンテナー内で実行する方法については、コンテナーラッパーを参照してください)。
ソース
オプション | 説明 |
|---|---|
含める | 重複検索に含めるファイルを指定するには、チェックアウトルートを基準とした改改行コードの Ant のようなワイルドカードを使用します。 |
除外 | 重複検索からファイルを除外するには、改行で区切られた Ant のようなワイルドカードを入力します(たとえば、 |
JetBrains ReSharper コマンドラインツールの設定
オプション | 説明 |
|---|---|
R#CLT ホームディレクトリ | ReSharper コマンドラインツールのバージョンを選択します。 インストールされている JetBrains ReSharper コマンドラインツールのバージョンは、管理 | ツールページで確認できます。特定の ReSharper バージョンを使用して ReSharper 複製を実行する場合(たとえば、Visual Studio にインストールしたバージョンと一致することを確認するため)、このページを使用して別のバージョンのツールをインストールし、使用するデフォルトバージョンを変更できます。 |
dupFinder プラットフォーム | dupFinder ツールのプラットフォームビット数を選択します。デフォルトでは、x64 です。クロスプラットフォームの重複ファインダーは、ReSharper 2020.2.1 以降でもサポートされています。 |
重複する検索設定
オプション | 説明 |
|---|---|
コードフラグメントの比較 | これらのオプションを使用して、反復コードフラグメントを検索するときにソースコードのどの要素を破棄するかを定義します。コードフラグメントは、構造的には類似しているが、異なる変数、フィールド、メソッド、型、またはリテラルを含む場合、重複していると見なすことができます。以下のサンプルを参照してください。 |
名前空間を破棄 | このオプションをオンにすると、名前空間の仕様が異なる類似コンテンツが重複として認識されます。
NLog.Logger.GetInstance().Log("abcd");
A.Log.Logger.GetInstance().Log("abcd");
|
リテラルを破棄する | このオプションがチェックされている場合、リテラルが異なる同じコード行は重複していると認識されます。
myStatusBar.SetText("Not Logged In");
myStatusBar.SetText("Logging In...");
|
ローカル変数を破棄 | このオプションがチェックされている場合、異なるローカル変数名を持つ類似のコードフラグメントは重複として認識されます。
int a = 5; a += 6;
int b = 5; b += 6;
|
クラスフィールド名を破棄 | このオプションがチェックされている場合、異なるフィールド名を持つ類似のコードフラグメントは重複として認識されます。
Console.WriteLine(myFoo);
Console.WriteLine(myBar);
... where myFoo and myBar are declared in the containing class
|
タイプを破棄 | このオプションがチェックされている場合、タイプ名が異なる類似のコンテンツは重複として認識されます。これらには、すべての可能な型参照が含まれています(下記参照)。
Logger.GetInstance("text");
OtherUtility.GetInstance("text");
... where Logger and OtherUtility are both type names (thus GetInstance is a static method in both classes)
Logger a = (Logger) GetObject("object");
OtherUtility a = (OtherUtility) GetObject("object");
public int SomeMethod(string param);
public void SomeMethod(object[] param);
|
以下の複雑さで重複を無視します | このフィールドを使用して、重複を検出するときに考慮するコードブロックの最低レベルの複雑さを指定します。 |
コメントを開いてファイルをスキップする | 改改行コードのキーワードを入力して、ファイルの開始コメントにそのキーワードを含むファイルを重複検索から除外します。 |
メッセージの部分文字列で領域をスキップ | メッセージの部分文字列にキーワードを含む領域を重複検索から除外する、改改行コードのキーワードを入力してください。たとえば、"generated code" と入力すると、"Windows Form Designer generated code" を含む領域はスキップされます。 |
デバッグ出力を有効にする | このオプションをオンにすると、ビルドメッセージにデバッグメッセージが含まれ、追加のログ( |
追加の dupFinder パラメーター | |
ビルドの失敗条件
ビルドに重複が多すぎる場合は、ビルド失敗条件を設定してビルドが失敗するように構成できます。
関連ページ:
ビルドステップの設定
ビルドステップは、CI/CD ワークフローの最小単位です。ビルドステップは、全体として実行される一連のアクションを定義します。ビルドステップは、ビルド構成とパイプラインジョブに属します。構成とパイプラインのビルドステップ:TeamCity は、.NET、Maven、NAnt、Xcode などの特定のビルドツール用に設計された幅広いビルドステップを提供します。現在、ビルド構成ではすべてのステップが利用可能です。バージョン 2025.07 で導入された
コンテナーラッパー
コンテナーラッパー拡張機能を使用すると、指定された Docker/Podman イメージ内でビルドステップを実行できます。ビルドを実行するエージェントにインストールされているコンテナーマネージャーに応じて、イメージはまたはコマンドによってプルされます。TeamCity は、コンテナーを匿名でプルできます (イメージが公開されている場合)。または、レジストリにログインした後でプルできます (プライベートレジストリの場合、または匿名ダウンロードに対する DockerHub のペナルティを回避する場合...