[发明专利]代码扫描、提交方法及代码扫描服务器、客户端和服务端在审
申请号: | 202111435466.0 | 申请日: | 2021-11-29 |
公开(公告)号: | CN114371870A | 公开(公告)日: | 2022-04-19 |
发明(设计)人: | 宫磊;王浩;潘松 | 申请(专利权)人: | 科大讯飞股份有限公司 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06F8/70;G06F8/658 |
代理公司: | 北京磐华捷成知识产权代理有限公司 11851 | 代理人: | 卜璐璐 |
地址: | 230088 安徽*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 扫描 提交 方法 服务器 客户端 服务端 | ||
1.一种代码扫描方法,其特征在于,所述方法包括:
接收客户端的预推送钩子发送的第一代码提交信息,所述第一代码提交信息是用户在所述客户端针对本地提交的代码发起推送操作后由所述预推送钩子获取的;
接收服务端的预接收钩子发送的第二代码提交信息和代码变动文件,所述第二代码提交信息和所述代码变动文件是所述预接收钩子从所述客户端接收到所述本地提交的代码后获取的;
基于所述第一代码提交信息和所述第二代码提交信息获取与所述代码变动文件相关联的基线代码,并基于所述代码变动文件确定所述基线代码中的修改部分;
对所述基线代码中的修改部分进行扫描,得到第一扫描结果;
将所述代码变动文件中的代码加入所述基线代码中生成所述本地提交的代码,对所述代码变动文件中的代码进行扫描,得到第二扫描结果;
将所述第一扫描结果和所述第二扫描结果进行比较,得到本次推送操作的扫描结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在得到所述扫描结果后,调用所述预接收钩子中开放的接口,以主动向所述预接收钩子通知扫描完成,从而使得所述预接收钩子获取本次推送操作的扫描结果,以用于确定所述本次推送操作是否成功;或者
在得到所述扫描结果后,所述预接收钩子通过轮询的方式获取所述本次推送操作的扫描结果,以用于确定所述本次推送操作是否成功。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一扫描结果和所述第二扫描结果进行比较,得到本次推送操作的扫描结果,包括:
对于所述第二扫描结果中的每个程序错误,确定所述程序错误所在的代码行是否是相对于所述基线代码的新增行;
如果所述程序错误所在的代码行不是相对于所述基线代码的新增行,则确定所述程序错误不是新增的程序错误;
如果所述程序错误所在的代码行是相对于所述基线代码的新增行,则确定所述程序错误为新增的程序错误,所有所述新增的程序错误作为本次推送操作的扫描结果。
4.根据权利要求1所述的方法,其特征在于,当所述代码变动文件中的代码是所述基线代码中不存在的新增代码时,不存在所述修改部分和所述第一扫描结果,将所述第二扫描结果作为所述本次推送操作的扫描结果。
5.根据权利要求1所述的方法,其特征在于,当所述代码变动文件指示所述本地提交的代码是所述基线代码被删除了部分代码而得到的时,不执行代码扫描。
6.根据权利要求1所述的方法,其特征在于,所述第一代码提交信息包括用户名、本地提交标识符、远端提交标识符和代码库地址;
所述第二代码提交信息包括用户名、本地提交标识符、远端提交标识符和目标代码分支名。
7.根据权利要求1所述的方法,其特征在于,所述代码变动文件为带相对路径的代码变动文件所构成的压缩文件。
8.根据权利要求1所述的方法,其特征在于,所述基线代码是预先从所述服务端下载并经存储的。
9.根据权利要求1-8中的任一项所述的方法,其特征在于,所述方法还包括:
对失败的所述推送操作呈现一键推送按钮,所述一键推送按钮在被用户点击后,将强制提交所述本地提交的代码。
10.根据权利要求9所述的方法,其特征在于,所述一键推送按钮仅对预设权限级别的用户可用。
11.根据权利要求1-6中的任一项所述的方法,其特征在于,所述客户端为git客户端,所述服务端为gitlab服务端、github服务端、Gitea代码托管服务端、GitkKaken代码托管服务端或者Beanstalk代码托管服务端。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于科大讯飞股份有限公司,未经科大讯飞股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111435466.0/1.html,转载请声明来源钻瓜专利网。