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

インスペクションにはいくつかの設定が搭載されており、動作を変更することができます。
選択したファイルセットのすべての重複を一度に表示するには、名前でインスペクションを実行します。

インスペクションを構成する
Ctrl+Alt+S を押して設定を開き、
を選択します。必要なインスペクションプロファイルがプロファイルリストで選択されていることを確認します。
インスペクションダイアログの検索フィールドに
duplicated code fragment
と入力して、リストからインスペクションを見つけます。インスペクションをクリックすると、その設定が右側に表示されます。
重大度 : リストから重大度レベルを選択するか、新しい重大度レベルを作成します。
スコープ : インスペクションが実行されるファイルの範囲 (分析対象となるコード) を選択します。
重複の表示 : 複製が表示されるファイルのセットを選択します。
誤検知を最小限に抑えるには、同じモジュールまたはファイル内の重複のみを検出するように分析を制限します。
次よりも単純な重複をスキップ : 選択したファイルセットの残りのコードと比較されるコードフラグメントのサイズを単位で設定します。
デフォルト値は、精度と見つかった重複の数の間の妥協点です。より正確な結果を得るには、値を大きくします。より多くの重複を検索するには、値を減らします。
単位の正確な値は次のように計算することができます。
units = 2 * number of statements + number of expressions
このインスペクションが動作する予定の言語を選択してください。
変更を適用し、ダイアログを閉じます。
重複の検索中に名前と値を無視する
ファイルタイプごとに、名前または値のみが異なる同一のエンティティを重複として扱うかどうかを定義できます。
Ctrl+Alt+S を押して設定を開き、
を選択します。分析を適用するファイルの種類を選択し、匿名化する構成の横にあるチェックボックスを選択します。
function multiply(a, b) { return (a * b); } function multiplication(c, d) { return (c * d); }変更を適用し、ダイアログを閉じます。
ダイアログでは、分析とインデックス作成から言語を完全に除外することもできます。このページで言語を無効にすると、この言語はインスペクション設定で非表示になります。
インスペクションの抑止
インスペクションを抑止すると、コード分析エンジンは、特定のコード(クラス、メソッド、フィールド、ステートメント)でこのインスペクションによって検出された問題をハイライトしません。
インスペクションを抑制したいコード要素にキャレットを置き、Alt+Enter を押します。
すべての重複を表示アクションの横にある矢印
をクリックし、必要な抑制アクションを選択します。
詳細は、インスペクションの抑止を参照してください。
インスペクションを無効にする
インスペクションを無効にすると、オフになります。つまり、コード分析エンジンは、このインスペクションが検出するように設計されている問題について、プロジェクトファイルの検索を停止します。
インスペクションを無効にするコード要素にキャレットを置き、Alt+Enter を押します。
前の複製に移動アクションの横にある矢印
をクリックし、インスペクションを無効にするを選択します。
インスペクションを再度有効にするには、重複したコードフラグメントの横にあるチェックボックスを選択します。
に移動し、詳細は、インスペクションを無効にするを参照してください。
重複を手動で見つける
メインメニューで、
に移動します。コード重複分析スコープの指定ダイアログで、分析範囲を選択します。プロジェクト全体、現在のファイル、コミットされていないファイル(バージョン管理下のプロジェクトの場合)、またはカスタム範囲を選択できます。また、テストソースを分析に含めることもできます。
コード重複解析設定ダイアログで、分析したい言語を選択します。
言語ごとに、オプションをチェックして分析設定を定義します。例: コードフラグメントが重複していると見なされるように同一の一致を要求するか、コード構成要素が重複していると見なされないような一定の制限を指定することができます(たとえば、ソースコードで各
if
構成要素を報告しないように)重複ツールウィンドウで、解析結果を調べましょう。
ツールウィンドウの左ペインで重複のリストを表示します。
右側のペインに、見つかった重複間の相違点が表示されます。矢印ボタンを使用して、選択した重複を差分ビューアーのセクションの 1 つに配置し、コードの断片を比較します。
ソースに移動またはソースの表示コンテキストメニューコマンドを使用して、エディター内の重複した場所に移動します。
JavaScript での抽出メソッドまたは Typescript での抽出メソッドリファクタリングを検出された反復ブロックのコードに自動的に適用してハイライトし、ソースコードから重複を除去します。
関連ページ:

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

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

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

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

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

重複ツールウィンドウ
重複ツールウィンドウには、重複の検索結果が表示されます。重複ツールウィンドウのペイン:このウィンドウは、次のペインで構成されています。左側のペインには、ソースコードの重複フラグメントのツリービューが表示されます。各ノードには次の情報が表示されます。スコープ内で検出された複製されたコードフラグメントの数。重複の「コスト」(コードブロックサイズの基底に加法アルゴリズムを使用して計算された任意の単位です ; 通常、コードフラグメントが大きいほどコストが高くなります)。重複しているクラスを含むクラス。...