WebStorm 2025.3 ヘルプ

重複を検索

WebStorm は、重複したコード箇所インスペクションを使用して、特定のファイルセット内のコードの反復ブロックを見つけるのに役立ちます。コードを記述または貼り付けて複製を作成すると、WebStorm はすぐにそれをハイライトし、クイックフィックスを提案します。

インスペクションにはいくつかの設定が搭載されており、動作を変更することができます。

選択したファイルセットのすべての重複を一度に表示するには、名前でインスペクションを実行します。

インスペクションを構成する

  1. Ctrl+Alt+S を押して設定を開き、エディター | インスペクションを選択します。

  2. 必要なインスペクションプロファイルプロファイルリストで選択されていることを確認します。

  3. インスペクションダイアログの検索フィールドに duplicated code fragment と入力して、リストからインスペクションを見つけます。

    インスペクションをクリックすると、その設定が右側に表示されます。

    Duplicated Code Fragment inspection settings
    • 重大度 : リストから重大度レベルを選択するか、新しい重大度レベルを作成します。

    • スコープ : インスペクションが実行されるファイルの範囲 (分析対象となるコード) を選択します。

    • 重複の表示 : 複製が表示されるファイルのセットを選択します。

      誤検知を最小限に抑えるには、同じモジュールまたはファイル内の重複のみを検出するように分析を制限します。

    • 次よりも単純な重複をスキップ : 選択したファイルセットの残りのコードと比較されるコードフラグメントのサイズを単位で設定します。

      デフォルト値は、精度と見つかった重複の数の間の妥協点です。より正確な結果を得るには、値を大きくします。より多くの重複を検索するには、値を減らします。

      単位の正確な値は次のように計算することができます。units = 2 * number of statements + number of expressions

    • このインスペクションが動作する予定の言語を選択してください。

  4. 変更を適用し、ダイアログを閉じます。

重複の検索中に名前と値を無視する

ファイルタイプごとに、名前または値のみが異なる同一のエンティティを重複として扱うかどうかを定義できます。

  1. Ctrl+Alt+S を押して設定を開き、エディター | 重複を選択します。

  2. 分析を適用するファイルの種類を選択し、匿名化する構成の横にあるチェックボックスを選択します。

    Ignore names and values while searching for duplicates

    例: 変数名または識別子名関数名またはフィールド名が有効になっている場合、以下の 2 つの機能は重複していると見なされます。

    function multiply(a, b) { return (a * b); } function multiplication(c, d) { return (c * d); }
  3. 変更を適用し、ダイアログを閉じます。

ダイアログでは、分析とインデックス作成から言語を完全に除外することもできます。このページで言語を無効にすると、この言語はインスペクション設定で非表示になります。

インスペクションの抑止

インスペクションを抑止すると、コード分析エンジンは、特定のコード(クラス、メソッド、フィールド、ステートメント)でこのインスペクションによって検出された問題をハイライトしません。

  1. インスペクションを抑制したいコード要素にキャレットを置き、Alt+Enter を押します。

  2. すべての重複を表示アクションの横にある矢印 をクリックし、必要な抑制アクションを選択します。

    Suppressing the inspection

詳細は、インスペクションの抑止を参照してください。

インスペクションを無効にする

インスペクションを無効にすると、オフになります。つまり、コード分析エンジンは、このインスペクションが検出するように設計されている問題について、プロジェクトファイルの検索を停止します。

  1. インスペクションを無効にするコード要素にキャレットを置き、Alt+Enter を押します。

  2. 前の複製に移動アクションの横にある矢印 をクリックし、インスペクションを無効にするを選択します。

    Disabling the inspection

インスペクションを再度有効にするには、設定 | エディター | インスペクションに移動し、重複したコード箇所の横にあるチェックボックスを選択します。

詳細は、インスペクションを無効にするを参照してください。

重複を手動で見つける (非推奨)

  1. メインメニューで、コード | コードの解析 | 重複コードの検索に移動します。

  2. コード重複分析スコープの指定ダイアログで、分析範囲を選択します。プロジェクト全体、現在のファイル、コミットされていないファイル(バージョン管理下のプロジェクトの場合)、またはカスタム範囲を選択できます。また、テストソースを分析に含めることもできます。

  3. コード重複解析設定ダイアログで、分析したい言語を選択します。

    言語ごとに、オプションをチェックして分析設定を定義します。例: コードフラグメントが重複していると見なされるように同一の一致を要求するか、コード構成要素が重複していると見なされないような一定の制限を指定することができます(たとえば、ソースコードで各 if 構成要素を報告しないように)

  4. 問題ツールウィンドウで、解析結果を調べましょう。

    Duplicates tool window
    • ツールウィンドウの左ペインで重複のリストを表示します。

    • 右側のペインに、見つかった重複間の相違点が表示されます。矢印ボタンを使用して、選択した重複を差分ビューアーのセクションの 1 つに配置し、コードの断片を比較します。

    • ソースに移動またはソースの表示コンテキストメニューコマンドを使用して、エディター内の重複した場所に移動します。

    • JavaScript での抽出メソッドまたは Typescript での抽出メソッドリファクタリングを検出された反復ブロックのコードに自動的に適用してハイライトし、ソースコードから重複を除去します。

コード重複分析スコープの指定

項目

説明

プロジェクト全体

プロジェクト全体の検査。

ファイル <名前>

プロジェクトツールウィンドウで現在選択されているか、エディターで開かれているファイルを調べます。

未コミットのファイル

このスコープは、バージョン管理下のプロジェクトでのみ使用できます。

バージョン管理システムにコミットされていないファイルのみをインスペクションします。

カスタムスコープ

ファイルのカスタムスコープをインスペクションします。リストから定義済みのスコープを選択するか、the Browse button をクリックして、開いたスコープダイアログでスコープを定義します。

挿入されたコードをインスペクション

コードに埋め込まれた他の言語のコードをインスペクションします。

コード重複解析設定

このダイアログを使用して、検索の感度を定義し、類似のコード構造をすべて報告しないようにするための制限を設定します。設定は言語固有のコンテキストで指定されます。

項目

説明

ActionScript

ECMAScript 6

Flow JS

JavaScript

TypeScript

TypeScript JSX

要素を匿名化するということは、名前または値だけが異なる同一のエンティティを重複として扱うかどうかを定義することを意味します。匿名化する要素を選択します。

  • 変数を匿名化

  • リテラルの匿名化

  • 関数を匿名化

重複するパラメーターを構成します。

  • 次よりも単純な重複は表示しない : 結果ウィンドウに表示される重複言語構成のサイズを設定します。デフォルトでは、10 単位未満の構成は含まれません(そしてこの制限は変更できません)。

  • 次よりも単純な共通ではない部分式を匿名化する : 類似していると見なすことができる言語構成内の副要素の値を設定し、その構成を結果ウィンドウに重複して表示します。数値が大きいほど、WebStorm と類似していると見なされる構文が大きくなります。

    値は、加法的アルゴリズムで計算された要素サイズに基づいて、任意の重みとして設定されます。要素が大きいほど、計算値は高くなります。

CSS

  • <number> 未満の CSS プロパティを含む重複を表示しない : 結果ウィンドウに表示される重複した言語構成のサイズを設定します。

XHTML

XML

HTML

  • <number> 個未満のタグを含む重複を表示しない : 結果ウィンドウに表示される重複した言語構成のサイズを設定します。

  • タグと属性の値を匿名化する

2025 年 11 月 26 日

関連ページ:

コードインスペクション

WebStorm には、プロジェクト内の異常なコードを検出して修正する一連のコードインスペクションがあります。IDE は、さまざまな問題を見つけてハイライトし、デッドコードを見つけ、考えられるバグやスペルの問題を見つけ、全体的なコード構造を改善することができます。インスペクションは、すべてのプロジェクトファイルまたは特定のスコープでのみ(たとえば、本番コードまたは変更されたファイルでのみ)コードをスキャンできます。すべてのインスペクションには、問題がコードに影響を与える可能性がある程度の重大度レ...

インスペクションを実行する

WebStorm は、エディターで開かれたファイル内のコードを分析し、入力時に問題のあるコードをハイライトします。さらに、選択したファイル範囲に対して必要なインスペクションまたは一連のインスペクションを手動で実行できます。この場合、ファイル内で検出されたすべての問題に関する包括的なレポートが得られます。現在のファイルの即時分析:IDE は継続的にコードをチェックし、問題を検索します。エディターの右上隅にあるウィジェットには、現在のファイルで検出された各重大度の問題の数が表示されます。ウィジェッ...

インスペクションプロファイル

インスペクションプロファイルには、有効なインスペクション、これらのインスペクションが分析するファイルの範囲、およびインスペクションの重大度設定に関する情報が保持されます。IntelliJ IDEA には、次の 2 種類のプロファイルがあります。グローバルですべてのプロジェクト (IDE レベル) で使用できるプロファイル IDE に保管。1 つのプロジェクト (プロジェクトレベル) でのみ使用可能なプロファイルプロジェクトに保管。レベル間でプロファイルを移動する詳細を参照してください。WebSto...

インスペクションの重大度を変更する

インスペクション重大度レベルは、検出されたコードの問題がプロジェクトに与える影響の深刻度を示します。WebStorm には、定義済みの一連の重大度レベルがあります。エラー構文エラー警告バグを引き起こす可能性がある、または拡張が必要なコードの断片弱い警告改善または最適化できるコードの断片 (冗長なコード、重複したコードフラグメントなど) サーバーの問題外部ビルドサーバー (TeamCity など) に起因する問題文法エラー文法の間違い。この重大度は、バンドルされている自然言語プラグインに起因します。...

インスペクションの無効化と有効化

いくつかのインスペクションは現在見たくない問題を報告するかもしれません。この場合、無効にしたり抑制したりできます。インスペクションを無効にする:インスペクションを使用不可にすると、無効になります。これは、このインスペクションが検出するように設計されているという問題について、コード分析エンジンがプロジェクトファイルの検索を停止することを意味します。インスペクションを無効にすると、現在のインスペクションプロファイルで無効になります。他のプロファイルでは有効のままです。WebStorm のほとんどの...

スコープとファイルの色

スコープは、プロジェクト内のファイルとフォルダーの名前付きセットです。スコープを使用すると、IDE のさまざまなビューでプロジェクト項目を視覚的に区別し、特定の操作の範囲を制限できます。スコープを使用すると、ファイルを論理的に整理できます。たとえば、テストソースをテストスコープに配置し、本番環境のコードを本番環境スコープに配置することができます。これにより、大スコーププロジェクトでの作業が容易になります。インスペクションをテストのみで実行すると、コードベース全体で実行するよりも高速になります。W...