分析重复项
PyCharm 可帮助您在特定范围内查找重复的代码块。 该范围可以是单个文件、项目、模块或自定义范围。 分析结果将直接显示在编辑器中,或显示在 Duplicates 工具窗口 的专用选项卡中。
即时检测重复项
PyCharm 支持即时发现重复项。 分析是通过 重复代码片段 检查 执行的,您可以在 常规 节点下的 编辑器 | 检查 设置页面  Ctrl+Alt+S 中找到该检查。
如果您在编写或粘贴代码时偶然遇到现有的重复项或以某种方式创建了重复项,PyCharm 会报告一个问题,并建议快速修复,以便您导航到检测到的重复项,或在 重复项 工具窗口中查看所有重复项。

配置重复项分析
按 Ctrl+Alt+S 打开设置,然后选择 。
在打开的 重复项 页面中,选择应应用重复项分析的文件类型。 此外,选中 变量或标识符名称/函数或字段名称/常量值 复选框,以确定使用不同名称的两个相同实体是否应视为重复项。
例如,如果启用了 变量或标识符名称 和 函数或字段名称 ,则以下两个函数将被视为重复项:
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结构)。在 Duplicates 工具窗口 中,查看分析结果。

在工具窗口的左侧窗格中查看重复项列表。
在右侧窗格中查看找到的重复项之间的差异。 使用箭头按钮将选定的重复项放入差异查看器的某个部分,并比较代码片段。
在编辑器中使用 跳转到源代码 或 显示源代码 上下文菜单命令导航到重复项。
对自动检测并高亮显示的重复代码块应用 提取方法重构 ,以从源代码中消除重复项。