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.00 到 1.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 |
打开聚焦的出现位置。 |
? |
切换详细的键盘帮助。 |