IntelliJ IDEA 2025.1 Help

分析重复项

IntelliJ IDEA 通过 重复的代码片段 检查 帮助您在某些文件中找到重复的代码块。 如果您通过编写或粘贴代码创建了重复项,IntelliJ IDEA 会立即突出显示并建议快速修复。

检查功能开箱即用,并且具有 若干设置 ,您可以更改这些设置以调整其行为。

要同时查看所选文件集中所有重复项,请 按名称运行检查

实时检测重复项

配置检查

  1. Ctrl+Alt+S 打开设置,然后选择 编辑器 | 检查

  2. 确保在 个人资料 列表中选择必要的 inspection profile

  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. Duplicates 工具窗口中,查看分析结果。

    重复项工具窗口

指定代码重复分析范围

条目

描述

整个项目

检查整个项目。

模块 <name>

检查当前在 项目 工具窗口 Alt+1 中选择的模块。

文件<名称>

检查当前在 项目 工具窗口中选择或在编辑器中打开的文件。

选定的文件

检查当前在 项目 工具窗口中选择的文件。

未提交的文件

该作用域仅适用于版本控制下的项目。

仅检查尚未提交到版本控制系统的文件。

目录

检查当前在 项目 工具窗口中选择的目录。

自定义作用域

检查自定义文件范围。 从列表中选择一个预定义范围,或点击 浏览按钮 ,并在打开的 Scopes 对话框中定义范围。

包含测试代码

检查包含在分析范围内的测试源文件。

检查注入代码

检查嵌入到您的代码中的 其他语言的代码片段

代码重复分析设置

使用此对话框定义搜索的敏感度,并设置限制,以帮助您避免报告每个类似的代码构造。 您的偏好已在特定语言环境中指定。

条目

描述

Java

匿名化元素意味着定义是否应将仅名称或值不同的相同实体视为重复项。 选择要匿名化的元素:

  • 匿名字面量

  • 匿名本地变量

  • 匿名字段

  • 匿名化方法

  • 匿名类型

配置重复参数:

  • 不要显示简单于...的重复项 :设置结果窗口中显示的重复语言结构的大小。 默认情况下,小于 10 单位的结构不包括在内(且此限制无法更改)。

  • 仅在作用域外部可见 :如果选择此复选框,请验证丢弃的子元素在当前构造之外是否有效。 如果子元素没有意义,它不能被丢弃,也不应被认为是重复的。

  • 将不常见的子表达式匿名化,比 :在语言结构中设置子元素的值,显示结果窗口中类似的结构为重复。 数字越大,IntelliJ IDEA 就会将更大的结构视为相似。

    这些值是根据使用加法算法计算的元素大小设置的任意权重。 元素越大,计算值越高。

ActionScript

ECMAScript 6

Flow JS

Groovy

JavaScript

TypeScript

TypeScript JSX

匿名化元素意味着定义是否应将仅名称或值不同的相同实体视为重复项。 选择要匿名化的元素:

  • 匿名变量

  • 匿名字面量

  • 匿名函数

配置重复参数:

  • 不要显示简单于...的重复项 :设置结果窗口中显示的重复语言结构的大小。 默认情况下,小于 10 单位的结构不包括在内(且此限制无法更改)。

  • 将不常见的子表达式匿名化,比 :在语言结构中设置子元素的值,显示结果窗口中类似的结构为重复。 数字越大,IntelliJ IDEA 就会将更大的结构视为相似。

    这些值是根据使用加法算法计算的元素大小设置的任意权重。 元素越大,计算值越高。

CSS

  • 不显示包含少于 <number> 个 CSS 属性的重复项 :设置在结果窗口中显示的重复语言结构的大小。

XHTML

XML

HTML 文件

  • 不显示包含少于 <number> 个标签的重复项 :设置在结果窗口中显示的重复语言结构的大小。

  • 匿名化标签和属性的值

最后修改日期: 2025年 4月 24日