[发明专利]一种基于代码提交历史的Git仓库相似性检测方法有效
申请号: | 201711383993.5 | 申请日: | 2017-12-20 |
公开(公告)号: | CN108170469B | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 张卫丰;申玉江;诸葛文杜 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/77 | 分类号: | G06F8/77 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 李吉宽 |
地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于代码提交历史的Git仓库相似性检测方法,首先需要搭建Git环境,然后获取项目,将需要检测分析的项目通过url从远程服务器上的Git仓库中拉取下来,存储到本地Git仓库;通过Git的版本历史记录功能,获取项目的所有历史版本的文件内容,然后通过文件相似性分析算法检测项目的每个相邻版本之间的相似性,判断项目提交者的工作量;同时还可以检测不同仓库中同一需求项目之间的相似性,通过比对项目中每个文件的MD5值以及对项目文件的相似性分析,判断项目提交者自主完成的可信度;最后根据项目真实性计算公式,判断项目的来源。本发明可以简单、快速和有效地检测Git仓库中项目的真实性,从而判断该项目是原创、借鉴还是抄袭。 | ||
搜索关键词: | 一种 基于 代码 提交 历史 git 仓库 相似性 检测 方法 | ||
步骤1:搭建和配置Git环境,下载Git软件并安装,配置环境变量,确认安装成功;
步骤2:获取项目历史版本提交记录编号;
步骤3:进行同一仓库项目历史版本之间的相似性分析;
步骤4:进行不同仓库同一需求项目之间的相似性分析;
步骤5:分析项目是原创、借鉴或者抄袭。
2.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤2具体包括以下步骤:21)通过url从远程服务器上的Git仓库中克隆整个项目到本地仓库并初始化该仓库;
22)与本地仓库建立连接并打开该连接;
23)通过Git的log历史记录命令获取所有的历史提交记录集合;
24)遍历步骤23中获取的集合,获取所有版本的历史提交记录编号。
3.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤3具体包括以下步骤:31)通过较新版本的历史提交记录编号获取本次所有提交的修改文件;
32)通过历史版本的历史提交记录编号获取步骤31获取的修改文件对应的原始文件;
33)对步骤31和步骤32获取的两个文件进行diff操作,使用文件相似性分析算法分析比较文件,标记文件内容是相等标记、插入标记或者是删除标记,获取分析结果diff标记集合;
34)遍历步骤33中获取的diff标记集合,分别统计删除标记、相等标记和插入标记行数,如果遇到删除标记,则记录删除标记的行数并与历史删除记录行数相加;如果遇到相等标记,则记录相等标记行数并与历史相等记录行数相加;如果遇到插入标记,则记录插入标记行数并与历史插入记录行数相加;最后将删除标记行数和相等标记行数相加,作为总行数;
35)通过步骤31计算文件修改数量,视为工作量;将步骤34统计的插入行数视为工作量。
4.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤4具体包括以下步骤:41)首先计算项目中每个文件的MD5值,然后逐一比对文件的MD5值,如果有MD5值相等,则可初步得出判定,该项目为非自主完成;然后逐一检测每一个文件的相似性;
42)对两个文件进行diff标记操作,使用文件相似性分析算法分析比较文件,标记文件内容是相等标记、插入标记或者是删除标记,获取分析结果diff标记集合;
43)遍历步骤42中获取的diff标记集合,分别统计删除标记、相等标记和插入标记行数,如果遇到删除标记,则记录删除标记的行数并与历史删除记录行数相加;如果遇到相等标记,则记录相等标记行数并与历史相等记录行数相加;如果遇到插入标记,则记录插入标记行数并与历史插入记录行数相加;最后将删除记录行数和相等记录行数相加,作为总行数;
44)使用步骤43获取的相等行数除以步骤3获取的总行数作为文件相似性;将所有文件的相似性相加取平均值作为该本次检测的相似性,将所有检测的相似性相加取平均值作为该项目的相似性。
5.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤5具体包括以下步骤:51)如果只经过步骤3分析而没有步骤4分析,首先查看历史记录提交次数,如果历史记录提交次数小于2次,标记原创系数为0.1;如果历史记录提交次数在2‑3之间,标记原创系数为0.3;如果历史提交次数在4‑5之间,标记原创系数为0.6;如果历史记录提交次数在6‑8之间,原创系数为0.8;如果历史记录提交次数超过8次,原创系数为1;然后根据步骤3统计的工作量计算相邻版本之间的工作量差值,如果差值在20以内是正常范围,记录差值分为100;如果差值在20‑30之间,记录差值分为95;如果差值在30‑45之间,记录差值分为90;如果差值在45‑60之间,记录差值分为80;如果差值在60‑75之间,记录差值分为70;如果差值在75‑90,记录差值分为60;如果差值在90‑110,记录差值分为45;如果差值在110‑130,记录差值分为30;如果差值在130‑160之间,记录差值分为15;如果差值超过160,则记录差值分为0;最后将原创系数乘以差值分的平均分作为真实性结果,如果结果低于40分,则标记为抄袭;如果结果在40‑60分之间,标记为借鉴;如果结果在60分以上,标记为原创;
52)如果既有步骤3分析又有步骤4分析,首先将步骤1计算的真实性结果作为初步真实性结果;然后将步骤4计算的相似性作为项目初步真实性结果系数;最后将初步真实性结果乘以初步真实性结果系数再加上5作为真实性结果,真实性结果计算方法同步骤1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711383993.5/,转载请声明来源钻瓜专利网。
- 上一篇:一种自动检测注释和代码一致性的方法及其系统
- 下一篇:SOC系统按位写装置