IntelliJ IDEA 2025.3 Help

分析重复项

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

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

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

实时检测重复项

配置检查

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

  2. 确保在 配置文件 列表中选择必要的 inspection profile

  3. 检查 对话框的搜索字段中,输入 重复的代码片段 以在列表中找到检查。

    一旦您点击检查,其设置将出现在右侧。

    • 严重性 :从列表中选择一个 严重级别创建一个新的

    • 范围 :选择检查将运行的文件作用域(要分析的代码)。

    • 显示以下来源的重复项 :选择要显示重复项的文件集。

      为减少误报,将分析限制为仅检测同一模块或文件内的重复项。

    • 跳过比以下简单的重复内容 :配置代码片段的大小,以单位为选定文件集中的其余代码进行比较。

      默认值是在准确性和找到的重复项数量之间的折中。 增加数值以获得更准确的结果。 降低此值以找到更多重复项。

      单位的确切值可以按如下方式计算: 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>

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

所选文件

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

未提交的文件

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

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

目录

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

自定义范围

检查自定义文件范围。 从列表中选择一个预定义范围,或点击 浏览按钮 ,并在打开的 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年 12月 2日