IntelliJ IDEA 2026.1 Help

重複を分析する

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

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

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

その場で重複を検出する

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

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

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

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

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

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

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

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

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

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

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

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

    • 最低出現回数 :重複と見なすコード箇所の最小出現回数を選択してください。

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

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

インスペクションを設定する

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

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

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

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

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

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

構成要素を匿名化する

インスペクションの抑止

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

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

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

    インスペクションの抑制

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

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

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

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

  2. すべての重複を表示 アクションの横にある矢印 をクリックし、 インスペクションを無効にする を選択します。

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

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

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

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

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

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

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

    コード重複解析設定
  4. 重複ツールウィンドウで解析結果を確認しましょう。

    重複ツールウィンドウ

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

項目

説明

プロジェクト全体

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

モジュール <name>

プロジェクト ツールウィンドウ(Alt+1 )で現在選択されているモジュールをインスペクションします。

ファイル <name>

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

選択したファイル

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

未コミットのファイル

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

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

ディレクトリ

プロジェクト ツールウィンドウで現在選択されているディレクトリを調べます。

カスタムスコープ

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

テストソースを含める

分析範囲に含まれるテストソースを調べます。

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

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

コード重複解析設定

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

項目

説明

Java

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

  • リテラルの匿名化

  • ローカル変数の匿名化

  • フィールドの匿名化

  • メソッドの匿名化

  • 型の匿名化

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

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

  • スコープ外からのみ可視: このチェックボックスが選択されている場合は、破棄されたサブ要素が現在の構成外で有効であることを確認してください。 サブ要素が無意味な場合は、破棄できず、重複していると見なすべきではありません。

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

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

ActionScript

ECMAScript 6

Flow JS

Groovy

JavaScript

TypeScript

TypeScript JSX

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

  • 変数を匿名化

  • リテラルの匿名化

  • 関数を匿名化

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

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

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

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

CSS

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

XHTML

XML

HTML

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

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

2026 年 3 月 30 日