重複ファインダー (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 パラメーター |
|
ビルド失敗条件
ビルドに重複が多すぎる場合は、 ビルド失敗条件を設定してビルドが失敗するように構成できます。