用于持续集成过程中的静态代码质量分析方法及计算设备技术

技术编号:24888514 阅读:16 留言:0更新日期:2020-07-14 18:15
本发明专利技术公开了一种用于持续集成过程中的静态代码质量分析方法,在计算设备中执行,该方法包括以下步骤:当开发者将分支代码推送至代码仓库时,获取该分支代码所属的项目分支信息,将项目分支信息作为待扫描任务加入扫描队列;对于扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析,并存储质量分析结果;将分支代码的质量分析结果即时反馈给相应的开发者。本发明专利技术一并公开了相应的计算设备。

【技术实现步骤摘要】
用于持续集成过程中的静态代码质量分析方法及计算设备
本专利技术涉及代码质量检测
,尤其涉及一种用于持续集成过程中的静态代码质量分析方法及计算设备。
技术介绍
持续集成是一种软件开发实践,即团队开发成员尽可能早、尽可能快地将各自开发的代码集成起来,每次集成都通过自动化的构建(包括静态代码扫描、编译、自动化测试、发布等)来验证,从而尽早地发现集成错误。软件静态代码扫描是软件质量检测的一部分,其指的是当开发者完成源代码后,对源代码进行扫描,找出代码中存在的语义缺陷、安全漏洞等问题。统计显示,在整个软件开发生命周期中,30%~70%的代码逻辑设计缺陷和编码缺陷是可以通过静态代码扫描来发现和修复的。在软件开发过程中,团队开发成员通常采用Git(分布式版本控制系统)来管理项目代码,每个项目包括master、develop等多个分支。开发者在本地环境进行分支代码的编写,然后将代码的变动部分推送至远程Git服务器,以便将更新后的代码同步给团队其他成员。如果开发者将分支代码推送至Git服务器后,能够即时收到本次更新的代码的质量分析结果,将有利于开发者及时对代码问题进行排查和修复,从而大大提高整个持续集成过程的质量和效率。
技术实现思路
为此,本专利技术提供一种用于持续集成过程中的静态代码质量分析方法及计算设备,以力图解决或至少缓解上面存在的问题。根据本专利技术的第一个方面,提供一种用于持续集成过程中的静态代码分析方法,在计算设备中执行,包括步骤:当开发者将分支代码推送至代码仓库时,获取所述分支代码所属的项目分支信息,将所述项目分支信息作为待扫描任务加入扫描队列;对于所述扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析,并存储质量分析结果;将分支代码的质量分析结果即时反馈给相应的开发者。可选地,在根据本专利技术的静态代码分析方法中,项目分支信息包括:项目名称、分支名称、开发者名称、开发者联系方式、项目地址、项目版本号中的至少一种。可选地,在根据本专利技术的静态代码分析方法中,将所述项目分支信息作为待扫描任务加入扫描队列的步骤包括:判断所述分支代码所在的分支是否位于分支白名单中,若否,则将相应的项目分支信息作为待扫描任务加入扫描队列。可选地,在根据本专利技术的静态代码分析方法中,对于所述扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析的步骤包括:当所述扫描队列中的待扫描任务的数量小于等于预设的最大并发数量时,创建多个进程,每个进程对应于一个待扫描任务,所述多个进程并行地对相应的分支代码进行质量分析;当所述扫描队列中的待扫描任务的数量大于所述最大并发数量时,创建最大并发数量个进程,所述最大并发数量个进程按照待扫描任务被加入扫描队列的顺序,并行地对待扫描任务所对应的分支代码进行质量分析。可选地,在根据本专利技术的静态代码分析方法中,对待扫描任务所对应的分支代码进行质量分析的步骤包括:确定所述分支代码的语言类型;根据所述语言类型,将所述待扫描任务的项目分支信息组装成扫描命令;执行所述扫描命令,根据所述语言类型所对应的分析规则来对所述分支代码进行质量分析。可选地,在根据本专利技术的静态代码分析方法中,根据所述分支代码所在的项目文件夹的特征来确定所述分支代码的语言类型。可选地,在根据本专利技术的静态代码分析方法中,确定所述分支代码的语言类型的步骤包括:若分支代码所在的项目文件夹中存在名称为pom.xml的文件,则分支代码的语言类型为Java;若分支代码所在的项目文件夹中,后缀名为.cs的文件的比例大于第一阈值,则分支代码的语言类型为C#;若分支代码所在的项目文件夹中,后缀名为.py的文件的比例大于第二阈值,则分支代码的语言类型为Python;若分支代码所在的项目文件夹中存在名为package.json的文件,则分支代码的语言类型为JavaScript。可选地,在根据本专利技术的静态代码分析方法中,质量分析结果包括一个或多个代码质量问题,所述将分支代码的质量分析结果即时反馈给相应的开发者的步骤包括:将本次质量分析结果中的代码质量问题按照问题类型进行合并,生成本次待办问题;以及将本次待办问题通过即时消息系统推送至开发者。可选地,在根据本专利技术的静态代码分析方法中,在所述存储质量分析结果的步骤之后,还包括步骤:排查往期待办问题是否在本次推送的分支代码中已被修复,其中,所述往期待办问题为本次质量分析之前存在的代码质量问题;以及将已被修复的代码质量问题从往期待办问题集合中移除。可选地,在根据本专利技术的静态代码分析方法中,还包括步骤:若本次质量分析失败,则将分析失败的消息和失败原因即时反馈给开发者。根据本专利技术的第二个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如上所述的用于持续集成过程中的静态代码质量分析方法。根据本专利技术的第三个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的用于持续集成过程中的静态代码质量分析方法。根据本专利技术的技术方案,当开发者将分支代码推送至代码仓库后,自动获取分支代码所属的项目分支信息,将项目分支信息作为待扫描任务加入扫描队列。对扫描队列中的每一个待扫描任务进行扫描,即对相应的分支代码进行质量分析,并将质量分析结果即时反馈给相应的开发者。这样,开发者能够及时获知自己推送的代码中的问题,引导开发者及时对问题进行排查和修复,从而大大提高整个持续集成过程的质量和效率。进一步地,本专利技术在监测到开发者将分支代码推送到代码仓库后,将相应的项目分支信息加入扫描队列中,这样可以将开发者推送代码和实际代码质量分析过程解耦,使推送代码的过程无需关注质量分析过程配置的细节,降低项目的接入成本。进一步地,本专利技术采用多个进程来对扫描队列中的待扫描任务进行并行的扫描和质量分析,进程的数量可以根据扫描队列中的待扫描任务的数量进行实时弹性伸缩。当某一时间段内开发者推送代码的频率较高时,进程的数量相应增加,提高待扫描任务的处理效率,从而使开发者能够很快地接收到代码质量的反馈。进一步地,本专利技术提供了增量问题筛选机制,在每次完成质量分析时,从项目的所有代码问题中筛选出本次扫描到的代码质量问题,并将代码质量问题按照问题类型进行合并,生成本次待办问题,将本次待办问题通过即时消息系统推送至开发者,从而使开发者及时关注到本次推送的代码中的问题,引导开发者对问题进行排查和修复。进一步地,本专利技术该提供了代码质量问题的跟踪闭环。在每次完成代码质量分析后,排查往期待办问题是否在本次推送的分支代码中已被修复,如果有已经修复的就更新往期待办问题集合,当待办问题中的所有问题都已修正后,就关闭待办问题,并通过即时消息系统通知开发者。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂本文档来自技高网...

【技术保护点】
1.一种用于持续集成过程中的静态代码质量分析方法,在计算设备中执行,包括步骤:/n当开发者将分支代码推送至代码仓库时,获取所述分支代码所属的项目分支信息,将所述项目分支信息作为待扫描任务加入扫描队列;/n对于所述扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析,并存储质量分析结果;/n将分支代码的质量分析结果即时反馈给相应的开发者。/n

【技术特征摘要】
1.一种用于持续集成过程中的静态代码质量分析方法,在计算设备中执行,包括步骤:
当开发者将分支代码推送至代码仓库时,获取所述分支代码所属的项目分支信息,将所述项目分支信息作为待扫描任务加入扫描队列;
对于所述扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析,并存储质量分析结果;
将分支代码的质量分析结果即时反馈给相应的开发者。


2.如权利要求1所述的方法,其中,所述项目分支信息包括:项目名称、分支名称、开发者联系方式、开发者名称、项目地址、项目版本号中的至少一种。


3.如权利要求1或2所述的方法,其中,所述将所述项目分支信息作为待扫描任务加入扫描队列的步骤包括:
判断所述分支代码所在的分支是否位于分支白名单中,若否,则将相应的项目分支信息作为待扫描任务加入扫描队列。


4.如权利要求1-3中任一项所述的方法,其中,所述对于所述扫描队列中的每一个待扫描任务,对该待扫描任务所对应的分支代码进行质量分析的步骤包括:
当所述扫描队列中的待扫描任务的数量小于等于预设的最大并发数量时,创建多个进程,每个进程对应于一个待扫描任务,所述多个进程并行地对相应的分支代码进行质量分析;
当所述扫描队列中的待扫描任务的数量大于所述最大并发数量时,创建最大并发数量个进程,所述最大并发数量个进程按照待扫描任务被加入扫描队列的顺序,并行地对待扫描任务所对应的分支代码进行质量分析。


5.如权利要求1-4中任一项所述的方法,其中,所述对待扫描任务所对应的分支代码进行质量分析的步骤包括:
确定所述分支代码的语言类型;
根据所述语言类型,将所述待扫描任务的项目分支信息组装成扫描命令...

【专利技术属性】
技术研发人员:张俊梁美英
申请(专利权)人:天津车之家数据信息技术有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1