首页/新闻资讯/正文详情

AngusGit 代码溯源是什么:在仓库里查相似代码,不是需求从哪来

发布时间:2026/11/3 18:46:59 来源:云帆数科 栏目:资讯中心
AngusGit 代码溯源是什么:在仓库里查相似代码,不是需求从哪来
这篇讲 AngusGit 里的「代码溯源」到底在查什么。看完你可以把它和需求追踪、开源许可证合规分开这里只做代码相似度查重告诉你哪段代码和同一个实例里的哪个文件相同或高度相似不会到互联网上找也不会自动运行。「代码溯源」常见还有需求追踪、许可证合规这两种含义和这里的查重不是一回事分清之后才知道手上的问题该去哪个入口。AngusGit 的代码溯源在团队版和企业版中提供入口是侧栏高级 → 溯源。1. 三种「代码溯源」分别是什么同样说「代码溯源」不同的人想问的问题并不一样常见的有下面三种说法想回答的问题用什么解决需求追踪这段代码是为哪个需求写的哪次发布上线的提交信息、拉取请求里关联 Issue加上发布记录许可证合规项目依赖的开源组件是什么许可证能不能用依赖扫描SCA和许可证检查代码相似度这段代码和别的项目里哪段一样一样到什么程度AngusGit 的代码溯源前两种在 AngusGit 里各有做法。需求追踪靠拉取请求关联 Issue在拉取请求的标题或描述里写上Closes #编号合并后这个 Issue 会自动关闭代码和需求就对应上了。许可证合规靠仓库的安全扫描其中 SCA软件成分分析是指扫描项目依赖了哪些开源组件。这两件事都不在代码溯源页面里做所以下面说的「代码溯源」只指第三种代码相似度检查。2. AngusGit 的代码溯源做什么打开高级 → 溯源页面标题是代码溯源说明是「比对代码相似度并追踪重复片段的来源。」在这个页面里每做一次检查就是一个溯源任务。创建溯源任务时要定下两件事查什么以及跟谁比。溯源目标要检查的代码也就是「查什么」。可以是一个仓库可以选分支、仓库里的一个文件、手工粘贴的一段代码块或者一个函数。被溯源仓库拿来比对的仓库也就是「跟谁比」。从同一个 AngusGit 实例里选 1 到 50 个仓库比对的是它们默认分支上的代码。创建任务时还可以调整相似度阈值文件默认 80%代码块默认 90%调低能看到更多「有点像」的结果调高则只留下几乎一样的代码具体怎么调见下一篇。任务跑完后结果页会先给出整体的重复率和唯一率再把每一处匹配按相似度分档完全相同95–100%、高度相似80–95%、中等相似60–80%、低度相似40–60%和唯一代码0–40%。每一条匹配都可以点对比代码把两边的代码左右并排显示出来。以已经跑完的任务 fixture: source vs dup (repo) 为例溯源目标是仓库 xlliu/test-trace-source-example被溯源仓库是 xlliu/test-trace-dup-example。结果页显示溯源仓库数 1/1、溯源文件数 2/2、代码行数 164/164重复率 84.52%唯一率 15.48%。其中有两处落在高度相似80–95%这一档src/main/java/cloud/xcan/example/trace/InvoicePriceCalculator.java的相似度是 86.86%73/94 行src/billing.py的相似度是 82.18%62/70 行。3. 它是怎么判断「相似」的不必先搞懂算法只要知道它大概怎么比读结果时就不容易误判。代码溯源不逐个字符地比较文本。它先按编程语言把代码拆成一个个「词」比如关键字、变量名、运算符和括号再在两边寻找连续相同的「词」连续 50 个以上相同才算作一处重复片段。找到重复片段之后再综合几种相似度算法算出一个分数。这样做有两个好处。第一只改了缩进、空行或注释的代码判断结果不受影响。第二可以有意忽略一部分改动打开忽略标识符差异后改过变量名、函数名的代码也能被识别为相似打开忽略字面量差异后只是字符串和数字不同的代码也能被识别为相似。这两个开关都在创建任务时的高级配置里。另外有几类目录不参与比对以.开头的目录例如.git、.idea以及node_modules和target。这些目录里大多是依赖包和构建产物比对它们没有意义。4. 适合用在哪些场景交付验收时查重复。外包或合作方交付了一个新仓库你想知道里面有多少代码和公司已有的项目重复。做法是把交付的仓库设为溯源目标把已有的相关仓库选为被溯源仓库然后看重复率和具体是哪些文件重复。重构前找复制粘贴的代码。几个服务各自复制了一份相同的工具类结果改一处就得改好几处。可以先用代码溯源把这些重复找出来再决定要不要抽成公共模块。查一段代码还出现在哪里。发现一段有问题的代码想知道其他项目里有没有同样的写法。可以把溯源目标设为代码块或函数粘贴这段代码在相关仓库里查一遍。它也有做不到的事用之前先确认不会去互联网上找。比对范围只限于你选的、同一个实例里的仓库。想知道代码是否来自某个开源项目要先把那个开源项目导入到实例里再把它选为被溯源仓库。不会自动运行。推送代码不会触发溯源每次都要手动创建并开始任务。不判断许可证。找到相似代码之后能不能用、要不要声明出处需要人来判断。常见问题社区版为什么没有溯源菜单代码溯源只在团队版和企业版中提供社区版不包含所以看不到这个菜单。这是版本差异不是故障。重复率高就说明有问题吗不一定。同一个团队的项目常用相同的框架和模板本来就会有不少相似代码。重复率只是一个提示还要点开对比代码看具体是哪些文件重复、是不是本不应该重复的业务代码。溯源和代码评审有什么关系没有直接关系。代码评审看的是一次改动对不对在拉取请求里进行代码溯源看的是整份代码和其他仓库像不像是一次单独的检查任务。两者可以配合使用溯源发现重复代码后通过拉取请求做重构再由评审人把关。小结「代码溯源」常被用来指三件事需求追踪、许可证合规和代码相似度AngusGit 的代码溯源做的是第三件。每个溯源任务把溯源目标仓库、文件、代码块或函数和同一实例里选定的 1 到 50 个被溯源仓库逐段比对给出重复率、从完全相同到唯一代码的相似度分档以及每处匹配的具体位置。它适合交付验收查重、重构前找复制粘贴的代码、查一段代码还在哪些项目里出现但它不会去互联网上找、不会自动运行也不判断许可证。代码溯源在团队版和企业版中提供社区版没有溯源菜单具体怎么建任务、怎么看结果见下一篇。结论AngusGit 的代码溯源高级 → 溯源是在同一实例内跨仓库查相似代码的查重工具需求追踪靠拉取请求关联 IssueCloses #编号开源许可证合规靠仓库安全扫描。参考文章AngusGit 手册代码溯源怎么给仓库做代码查重从建任务到看出重复函数Issue 怎么关联合并请求写上 Closes #编号合并后自动关闭合并前怎么拦住不合规的开源许可证

相关推荐

有效的管理:三定、三抓、三放、一复盘
有效的管理:三定、三抓、三放、一复盘

管理这件事,说复杂有一万本书,说简单就十个字——三定、三抓、三放、一复盘 —— 一位上任半年的部门经理 每天像救火,火越救越多 📌 本文看点 01、越忙越乱的两大根源 02、十个字的完整闭环 03、练成肌肉记忆三动作 上个月… · 2026/11/3 18:45:54

〖共创稿事节〗HarmonyOS 7 新特性实战(44):地图坐标如何变成声音方向——3D 地块与空间声源联动
〖共创稿事节〗HarmonyOS 7 新特性实战(44):地图坐标如何变成声音方向——3D 地块与空间声源联动

# 〖共创稿事节〗HarmonyOS 7 新特性实战(44):地图坐标如何变成声音方向——3D 地块与空间声源联动 山海的地图是一块立体浮雕:昆仑在左上,东海在右边,南山在正下方。异兽讲解来自哪个方向,本该… · 2026/11/2 15:22:57

培训机构续报率上不去,问题在一份学员学习台账
培训机构续报率上不去,问题在一份学员学习台账

每到续报季,家长坐下来问的第一句话往往是"这学期我孩子学得怎么样"。这句话怎么答,基本决定了续报成不成。可很多机构的回答,翻来覆去就三个字——"挺好的"。今天聊聊这三个字背后的问题,以及一份学员学习台… · 2026/11/2 15:22:57

ERNIE 4.5-VL震撼登场:424B参数多模态AI新体验
ERNIE 4.5-VL震撼登场:424B参数多模态AI新体验

ERNIE 4.5-VL震撼登场:424B参数多模态AI新体验 【免费下载链接】ERNIE-4.5-VL-424B-A47B-Base-PT 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-VL-424B-A47B-Base-PT 导语:百度ERNIE系列再添重磅成员——ERNIE 4.5-VL&#xf… · 2026/11/3 18:46:28

Fast-LIO到MAVROS视觉定位转换(含自启动脚本)
Fast-LIO到MAVROS视觉定位转换(含自启动脚本)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:46:28

【49】脑瘤数据集(有v5/v8模型)/YOLO脑瘤检测
【49】脑瘤数据集(有v5/v8模型)/YOLO脑瘤检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:46:28

ByteFF2:AI力场如何实现量子级液体预测突破?
ByteFF2:AI力场如何实现量子级液体预测突破?

ByteFF2:AI力场如何实现量子级液体预测突破? 【免费下载链接】byteff2 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/byteff2 导语:字节跳动最新发布的ByteFF2力场模型,通过融合图神经网络与量子力学数据… · 2026/11/3 18:46:28

70亿参数重塑音频智能:Kimi-Audio开源模型开启多模态交互新纪元
70亿参数重塑音频智能:Kimi-Audio开源模型开启多模态交互新纪元

70亿参数重塑音频智能:Kimi-Audio开源模型开启多模态交互新纪元 【免费下载链接】Kimi-Audio-7B 我们推出 Kimi-Audio,一个在音频理解、生成与对话方面表现卓越的开源音频基础模型。本仓库提供 Kimi-Audio-7B 的模型检查点。 项目地址: https://ai.git… · 2026/11/3 18:44:26

项目02--JsonRpc
项目02--JsonRpc

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:44:26

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码