[发明专利]代码扫描、提交方法及代码扫描服务器、客户端和服务端在审
申请号: | 202111435466.0 | 申请日: | 2021-11-29 |
公开(公告)号: | CN114371870A | 公开(公告)日: | 2022-04-19 |
发明(设计)人: | 宫磊;王浩;潘松 | 申请(专利权)人: | 科大讯飞股份有限公司 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06F8/70;G06F8/658 |
代理公司: | 北京磐华捷成知识产权代理有限公司 11851 | 代理人: | 卜璐璐 |
地址: | 230088 安徽*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 扫描 提交 方法 服务器 客户端 服务端 | ||
本发明公开一种代码扫描、提交方法及代码扫描服务器、客户端和服务端,该代码扫描方法包括:接收客户端的预推送钩子发送的第一代码提交信息;接收服务端的预接收钩子发送的第二代码提交信息和代码变动文件;基于第一代码提交信息和第二代码提交信息获取与代码变动文件相关联的基线代码,并基于代码变动文件确定基线代码中的修改部分;对基线代码中的修改部分进行扫描,得到第一扫描结果;对代码变动文件中的代码进行扫描,得到第二扫描结果;将第一扫描结果和第二扫描结果进行比较,得到本次推送操作的扫描结果,预接收钩子获取本次推送操作的扫描结果,以用于确定本次推送操作是否成功。该方法能够提高扫描效率和扫描精确性。
技术领域
本申请涉及计算机技术领域,具体地涉及一种代码扫描、提交方法及代码扫描服务器、客户端和服务端。
背景技术
现有主流的代码扫描方式都是基于整个代码库或者基于不同的分支之间的diff进行代码扫描(diff同difference是不同的意思,此处diff表示代码之间的差异)。通过调用静态代码扫描工具等工具进行代码扫描,然后生成代码扫描报告。
例如,一种常见的方案是通过定时任务或相似的方式,定期触发代码的全量扫描,该方式扫描不够及时且全量扫描耗时非常严重。另一种常见的方案是在代码已经提交到系统中之后,再进行代码检查,该方式是一种事后策略,代码推送(push)成功后,再检查代码是否存在问题,此时问题代码已经引入了代码库。再一种常见的方案是在代码push操作中获取增量代码和目标分支进行合并成为完整的代码,并进行代码扫描操作,该方式相当于对完整的代码库进行扫描,和前述的第一种方案相比更为及时,但仍是扫描了全量的代码,耗时严重。
发明内容
为了解决上述问题中的至少一个而提出了本申请。根据本申请一方面,提供了一种代码扫描方法,所述方法包括:接收客户端的预推送钩子发送的第一代码提交信息,所述第一代码提交信息是用户在所述客户端针对本地提交的代码发起推送操作后由所述预推送钩子获取的;接收服务端的预接收钩子发送的第二代码提交信息和代码变动文件,所述第二代码提交信息和所述代码变动文件是所述预接收钩子从所述客户端接收到所述本地提交的代码后获取的;基于所述第一代码提交信息和所述第二代码提交信息获取与所述代码变动文件相关联的基线代码,并基于所述代码变动文件确定所述基线代码中的修改部分;对所述基线代码中的修改部分进行扫描,得到第一扫描结果;将所述代码变动文件中的代码加入所述基线代码中生成所述本地提交的代码,对所述代码变动文件中的代码进行扫描,得到第二扫描结果;将所述第一扫描结果和所述第二扫描结果进行比较,得到本次推送操作的扫描结果。
其中,所述的客户端包括但不限于linux操作系统(centOS、ubuntu等)、windows操作系统、macOS操作系统等各种可以提交代码的介质。
在本申请的一个实施例中,所述方法还包括:在得到所述扫描结果后,调用所述预接收钩子中开放的接口,以主动向所述预接收钩子通知扫描完成,从而使得所述预接收钩子获取本次推送操作的扫描结果,以用于确定所述本次推送操作是否成功;或者在得到所述扫描结果后,所述预接收钩子通过轮询的方式获取所述本次推送操作的扫描结果,以用于确定所述本次推送操作是否成功。
在本申请的一个实施例中,所述将所述第一扫描结果和所述第二扫描结果进行比较,得到本次推送操作的扫描结果,包括:对于所述第二扫描结果中的每个程序错误,确定所述程序错误所在的代码行是否是相对于所述基线代码的新增行;如果所述程序错误所在的代码行不是相对于所述基线代码的新增行,则确定所述程序错误不是新增的程序错误;如果所述程序错误所在的代码行是相对于所述基线代码的新增行,则确定所述程序错误为新增的程序错误,所有所述新增的程序错误作为本次推送操作的扫描结果。
在本申请的一个实施例中,当所述代码变动文件中的代码是所述基线代码中不存在的新增代码时,不存在所述修改部分和所述第一扫描结果,将所述第二扫描结果作为所述本次推送操作的扫描结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于科大讯飞股份有限公司,未经科大讯飞股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111435466.0/2.html,转载请声明来源钻瓜专利网。