重複を分析する
PyCharm を使用すると、特定の範囲で繰り返し出現するコードブロックを見つけることができます。 この範囲は、単一ファイル、プロジェクト、モジュール、カスタムスコープです。 分析結果はエディターまたは Duplicates ツールウィンドウの専用タブに直接表示されます。
その場で重複を検出
PyCharm を使うと、その場で重複を見つけることができます。 分析は、 エディター | インスペクション 設定ページ Ctrl+Alt+S の 一般 ノードにある 重複したコード箇所 インスペクションによって実行されます。
既存の複製に遭遇した場合や、コードの作成や貼り付けで複製が発生した場合、PyCharm が問題を報告し、検出された複製への移動や、 重複 ツールウィンドウですべての複製を表示できるクイックフィックスを提案します。

重複分析を構成する
Ctrl+Alt+S を押して設定を開き、 を選択します。
表示される 重複 ページで、重複分析を適用するファイルの種類を選択します。 さらに、 変数名または識別子名/関数名またはフィールド名/定数値 チェックボックスを選択して、異なる名前を使用する 2 つの同一のエンティティを重複として扱うかどうかを定義します。
例: 変数名または識別子名 と 関数名またはフィールド名 が有効になっている場合、以下の 2 つの機能は重複していると見なされます。
def demo(a, b, c): return_type_of_sqrt = math.sqrt(b ** 2 - 4 * a * c) root1 = (-b + return_type_of_sqrt) / (2 * a) root2 = (-b - return_type_of_sqrt) / (2 * a) print(root1, root2) def sqrt_func(n, m, k): return_type_of_sqrt = math.sqrt(m ** 2 - 4 * n * k) result1 = (-m + return_type_of_sqrt) / (2 * n) result2 = (-m - return_type_of_sqrt) / (2 * n) print(result1, result2)Ctrl+Alt+S を押して設定を開き、 を選択します。
一般 ノードの 重複したコード箇所インスペクションを選択します。
インスペクション オプションで、同じファイル内だけで重複を表示するか、プロジェクト全体で重複を表示するかを選択します。 必要なファイルタイプの 次よりも単純な重複は表示しない フィールドで、検出したい重複した言語構造のサイズを設定します。 Python コンテキストでは、45 単位未満の構造はデフォルトで無視されます。 より小さいコード箇所の重複検出を有効にするには、単位数を変更してください。 単位の値は次のように計算できます:
units = 2*<number of statements> + <number of expressions>。
重複を手動で見つける (非推奨)
メインメニューで へ移動します。
コード重複分析スコープの指定 ダイアログで、解析の スコープを選択します:プロジェクト全体、現在のファイル、未コミットのファイル(バージョン管理下のプロジェクトの場合)、またはカスタムスコープ。 解析にテストソースを含めることもできます。
コード重複解析設定 ダイアログで、分析したい言語を選択します。
言語ごとに、オプションをチェックして分析設定を定義します。 例: コードフラグメントが重複していると見なされるように同一の一致を要求するか、コード構成要素が重複していると見なされないような一定の制限を指定することができます(たとえば、ソースコードで各
if構成要素を報告しないように)重複ツールウィンドウで解析結果を調べましょう。

ツールウィンドウの左ペインで重複のリストを表示します。
右側のペインに、見つかった重複間の相違点が表示されます。 矢印ボタンを使用して、選択した重複を差分ビューアーのセクションの 1 つに配置し、コードの断片を比較します。
ソースに移動 または ソースの表示 コンテキストメニューコマンドを使用して、エディター内の重複した場所に移動します。
メソッドの抽出リファクタリングを自動的に見つけてハイライトされたコードの反復ブロックに適用することにより、ソースコードから重複を排除します。