文档 chevron_right VS Code 簇面板 — 解读 Deslop 克隆簇

VS Code 簇面板

簇面板是 Deslop 重复代码发现结果背后的详细视图。它展示单个簇、Deslop 将这些位置归为一组的原因,以及可用于检查或比较各副本的编辑器操作。

簇 Id

簇 id 是这个重复代码组的稳定句柄。它由簇内容派生而来,因此除非底层代码变化到足以形成不同的簇,否则同一个克隆在多次刷新之间会保持相同的 id。

当你需要在 issue、智能体提示词或 MCP cluster-by-id 流程中引用某个发现结果时,请使用该 id。

克隆分桶

分桶标签是人类可读的克隆类型:

分桶 含义
Identical code 这些副本在归一化之后结构上完全相同。
Nearly identical code 这些副本很接近,但细微的差异可能很重要。
Loosely similar code Deslop 发现了较弱的重叠。请将其视为线索,而非定论。
Same behavior, different code 嵌入(向量嵌入)阶段发现了语义相似性。请审查这两处位置。

分桶下方的句子给出了该分桶的默认解读。它是参考指引,而非自动重构指令。

AI 匹配

当语义嵌入贡献了决定性信号时,会出现 AI MATCH。这通常意味着代码看起来不同,但似乎在做同样的事情。

不要盲目合并语义匹配。请阅读两处出现位置,并在提取共享代码之前使用 Compare。

排名

排名徽章显示该簇在当前报告中的位置。#1 是按重复影响计算的最严重的重复。其颜色分桶遵循与诊断信息和 Top Offenders 树相同的排名策略。

权重

权重是 Deslop 的重复影响评分。权重越高,意味着重复的片段越大、被复制的次数越多,或跨越的源代码越多。用它来决定优先检查什么。

权重不是百分比,也不是 CI 门禁。请使用仓库重复百分比和阈值来做通过或失败的判定。

大小

大小是该簇所代表的被克隆 AST 成员的数量。大小越大,通常意味着重复的单元是更大的结构性片段。

出现次数

出现次数是该簇中编辑器位置的数量。它可能大于面板中显示的行数,因为 Deslop 会限制单个超大簇发送到面板的出现位置数量。

规范出现位置

规范出现位置是 Deslop 用作比较锚点的第一个出现位置。Compare 会以该锚点为基准打开其他出现位置,使差异对比有一致的左右两侧。

规范并不意味着“最佳”或“真相来源”。它只是用于导航和比较的稳定锚点。

信号

信号解释了这些位置为何被归为一组。评分范围从 0.001.00;分数越高表示该信号检测到的相似性越强。

结构

structural 衡量在标识符和字面量被归一化之后的 AST 形状相似性。高结构评分能捕捉到完全相同的克隆和重命名的克隆。

Jaccard

jaccard 衡量在忽略格式、注释和琐碎内容之后的归一化词元重叠。高 Jaccard 评分能捕捉到那些仍共享大部分文本的近似漏检情况。

嵌入

embedding 衡量来自所选本地嵌入模型的语义相似性。即使语法发生分歧,它也能找到行为相似的代码。

在新的实时会话中,嵌入处于关闭状态,直到选择了某个模型为止。

融合

fused 是 Deslop 的综合克隆评分。它将结构、词元和嵌入证据结合在一起,是用于判定某一对是否值得报告的评分。

出现位置

出现位置是克隆出现的具体文件位置。每一行展示的是面向人类的编辑器目标,而非原始字节偏移。

出现位置定位

出现位置定位是 Open 将导航到的文件以及行号和列号。当行号和列号不可用时,面板会回退到仅显示路径,并告知你扩展宿主无法读取该源文件。

隐藏的出现位置

hidden 表示该路径匹配了 report_hide 配置。Deslop 仍然知道该范围,但隐藏的行不会抬高可见报告的排名。

Open 操作

Open 会将 VS Code 移动到该出现位置并选中克隆范围。

Compare 操作

Compare 会打开 VS Code 的差异编辑器,将所选出现位置与规范出现位置进行对比。它在规范行上被禁用,因为将锚点与其自身比较不会显示有用的信息。

簇导航

Previous cluster 和 Next cluster 会在与 Top Offenders 视图相同的最严重者优先列表中移动。它们在 webview 内部本地更新所选的簇。

键盘快捷键

当焦点位于 webview 内部时,面板支持键盘导航:

快捷键 操作
j / k 移动聚焦的出现位置行。
n / p 移动到下一个或上一个簇。
Enter 打开聚焦的出现位置。
? 切换详细的键盘帮助。