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