System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于SonarQube的增量扫描报告生成方法及装置制造方法及图纸_技高网

基于SonarQube的增量扫描报告生成方法及装置制造方法及图纸

技术编号:43491332 阅读:14 留言:0更新日期:2024-11-29 17:00
本发明专利技术涉及静态代码扫描技术领域,尤其涉及基于SonarQube的增量扫描报告生成方法及装置,该方法包括:向增量扫描平台发送代码合并请求,构建映射关系,对本地代码仓库中的变动文件进行代码裁剪,生成用于静态分析的文件,触发扫描,生成扫描信息;基于扫描信息,生成增量代码扫描报告。本发明专利技术通过代码仓库托管平台提交代码合并请求,并触发webhook机制,向增量扫描平台发送代码合并请求,增量扫描平台根据代码合并请求,对本地代码仓库中的变动文件进行代码裁剪,只保留增量代码,一方面能够解决大型项目全量分析缓慢问题,另一方面能够有效减少对代码静态扫描资源的损耗,快速生成增量代码扫描报告,有效提高效率。

【技术实现步骤摘要】

本专利技术涉及静态代码扫描,尤其涉及基于sonarqube的增量扫描报告生成方法及装置,特别涉及一种基于sonarqube社区版快速生成增量代码扫描报告的方法及装置。


技术介绍

1、静态代码扫描作为一种质量保障手段,可以在提测之前规避掉很多低级错误。对于技术债很多的代码仓库,合适的落地手段通常是采用增量代码进行扫描,保证上线新增的代码没有不规范的问题,再逐步完成对整个代码仓库的技术整改。

2、sonarqube作为业内主流的代码质量管理平台,通过简单的规则配置即可发现代码中的漏洞、代码异味、潜在错误和不合规的编码标准。现有的sonarqube具有社区版、开发版、企业版和数据中心版四种业务版本,目前只有社区版免费供大众使用,sonarqube社区版虽具备免费以及易于部署的优势,但也存在一些局限性,例如:(1)分支管理限制,sonarqube社区版不支持多分支的独立分析,这意味着一个项目的所有分支将共用同一份分析结果,导致难以满足不同需求场景下的定制化分析需求;(2)资源消耗与性能瓶颈,随着项目规模的扩大,代码扫描与分析过程对服务器资源的需求显著增加,尤其是在大型项目中,sonarqube的并发处理能力受限,导致分析速度明显减缓;(3)增量代码识别机制,sonarqube社区版在增量代码的识别上,采用基于时间或前后分析结果对比的方式,缺乏与具体需求变更的有效关联,这在涉及多个需求同时上线的场景下,可能存在分析效率低下的问题,尤其是在有限的硬件资源和紧迫的时间窗口内,使得完成多需求增量扫描成为挑战。

3、为此,本专利技术提供了基于sonarqube的增量扫描报告生成方法及装置。


技术实现思路

1、基于此,有必要针对上述技术问题,提供基于sonarqube的增量扫描报告生成方法及装置。

2、根据本专利技术的一方面,提供了基于sonarqube的增量扫描报告生成方法,用于增量扫描平台、与增量扫描平台交互的代码仓库托管平台以及与增量扫描平台交互的sonarqube平台,该方法包括:代码仓库托管平台获取开发人员提交的代码合并请求,并触发webhook机制,向增量扫描平台发送代码合并请求;增量扫描平台接收代码仓库托管平台发送的代码合并请求,并获取开发人员录入的需求信息、代码仓库信息、代码分支信息的三者关系信息,通过api接口在sonarqube平台上创建对应的sonarqube项目并配置对应的扫描规则信息,同时,构建需求信息、代码仓库信息、代码分支信息、代码合并请求和sonarqube项目之间的映射关系,并将所述映射关系发送至代码仓库托管平台;增量扫描平台根据代码合并请求,对本地代码仓库中的变动文件进行代码裁剪,生成用于静态分析的文件,执行增量扫描平台的sonarscanner,sonarscanner拉取sonarqube平台中的sonarqube项目并触发扫描,生成扫描信息,并将扫描信息发送至sonarqube平台;sonarqube平台接收扫描信息,并基于扫描信息,生成增量代码扫描报告。

3、在一些实施例的一些可选的实现方式中,所述代码合并请求包括需求分支信息和上线分支信息,其中,所述需求分支信息包括多个代码分支信息,所述上线分支信息包括多个发布分支信息。

4、在一些实施例的一些可选的实现方式中,所述增量扫描平台根据代码合并请求,对本地代码仓库中的变动文件进行代码裁剪,生成用于静态分析的文件,具体包括:步骤一、仓库拉取,采用jgit开源库克隆远程代码仓库托管平台上的代码仓库到本地代码仓库,同时,切换本地代码仓库到代码分支;步骤二、获取变动文件路径,调用代码仓库托管平台,对需求分支和上线分支之间差异的api进行比较,获取变动文件路径、变动文件及其修改类型,并生成对应的待剪裁任务;步骤三、动态资源调配,基于线程池排队数量策略和文件变动数量策略,获取待剪裁任务,并动态匹配对应的线程池;步骤四、初次裁剪,获取线程池内的待剪裁任务,基于所述待剪裁任务中包含的修改类型,对待剪裁任务中包含的变动文件进行初次裁剪处理,保留修改类型为新增和/或修改的变动文件,得到初次裁剪文件;步骤五、二次裁剪,通过代码仓库托管平台调用需求分支信息和上线分支信息,采用myers差分算法,计算初次裁剪文件中需要修改的修改参数数据,基于修改参数数据,对初次裁剪文件进行二次裁剪处理,生成用于静态分析的文件。

5、在一些实施例的一些可选的实现方式中,所述修改参数数据包括新增代码行数范围信息、删除代码行数范围信息和修改代码行数范围信息。

6、在一些实施例的一些可选的实现方式中,所述sonarscanner拉取sonarqube平台中的sonarqube项目并触发扫描,生成扫描信息,具体包括:sonarscanner拉取sonarqube平台中sonarqube项目并触发扫描,基于所述sonarqube项目对应的扫描规则信息和增量代码扫描报告中预设的增量报告指标信息,对增量代码进行扫描处理,并在扫描过程中,轮询获取扫描规则信息中包含的代码扫描门禁数据,生成包含多个增量报告指标数据的扫描信息。

7、在一些实施例的一些可选的实现方式中,所述sonarqube平台接收扫描信息,并基于扫描信息,生成增量代码扫描报告,具体包括:sonarqube平台接收扫描信息,基于增量代码扫描报告中预设的增量报告指标信息,将多个增量报告指标数据进行求和处理,得到综合增量报告指标数据,将综合增量报告指标数据与代码扫描门禁数据进行比较,判断综合增量报告指标数据是否小于等于代码扫描门禁数据,若综合增量报告指标数据小于等于代码扫描门禁数据,则生成放行对应的需求信息的增量代码扫描报告,若综合增量报告指标数据大于代码扫描门禁数据,生成不放行对应的需求信息的增量代码扫描报告。

8、在一些实施例的一些可选的实现方式中,还包括:sonarqube平台设有可视化界面,用于开发人员查看增量代码扫描报告。

9、根据本专利技术的第二方面,提供了基于sonarqube的增量扫描报告生成装置,用于增量扫描平台、与增量扫描平台交互的代码仓库托管平台以及与增量扫描平台交互的sonarqube平台,包括:所述代码仓库托管平台包括代码合并请求模块和请求发送模块;其中,所述代码合并请求模块用于获取开发人员提交的代码合并请求;所述请求发送模块用于触发webhook机制,向增量扫描平台发送代码合并请求;所述增量扫描平台包括请求接收模块、信息录入模块、sonarqube项目搭建模块、映射关系构建模块、代码裁剪模块和扫描模块;其中,所述请求接收模块用于接收代码仓库托管平台发送的代码合并请求;所述信息录入模块用于获取开发人员录入的需求信息、代码仓库信息、代码分支信息的三者关系信息;所述sonarqube项目搭建模块用于通过api接口在sonarqube平台上创建对应的sonarqube项目并配置对应的扫描规则信息;所述映射关系构建模块用于构建需求信息、代码仓库信息、代码分支信息、代码合并请求和sonarqube项目之间的映射关系,并将所本文档来自技高网...

【技术保护点】

1.基于SonarQube的增量扫描报告生成方法,其特征在于,用于增量扫描平台、与增量扫描平台交互的代码仓库托管平台以及与增量扫描平台交互的SonarQube平台,该方法包括:

2.根据权利要求1所述的基于SonarQube的增量扫描报告生成方法,其特征在于,所述代码合并请求包括需求分支信息和上线分支信息,其中,所述需求分支信息包括多个代码分支信息,所述上线分支信息包括多个发布分支信息。

3.根据权利要求2所述的基于SonarQube的增量扫描报告生成方法,其特征在于,所述增量扫描平台根据代码合并请求,对本地代码仓库中的变动文件进行代码裁剪,生成用于静态分析的文件,具体包括:

4.根据权利要求3所述的基于SonarQube的增量扫描报告生成方法,其特征在于,所述修改参数数据包括新增代码行数范围信息、删除代码行数范围信息和修改代码行数范围信息。

5.根据权利要求3所述的基于SonarQube的增量扫描报告生成方法,其特征在于,所述sonarScanner拉取SonarQube平台中的sonarQube项目并触发扫描,生成扫描信息,具体包括:sonarScanner拉取SonarQube平台中sonarQube项目并触发扫描,基于所述sonarQube项目对应的扫描规则信息和增量代码扫描报告中预设的增量报告指标信息,对增量代码进行扫描处理,并在扫描过程中,轮询获取扫描规则信息中包含的代码扫描门禁数据,生成包含多个增量报告指标数据的扫描信息。

6.根据权利要求5所述的基于SonarQube的增量扫描报告生成方法,其特征在于,所述SonarQube平台接收扫描信息,并基于扫描信息,生成增量代码扫描报告,具体包括:SonarQube平台接收扫描信息,基于增量代码扫描报告中预设的增量报告指标信息,将多个增量报告指标数据进行求和处理,得到综合增量报告指标数据,将综合增量报告指标数据与代码扫描门禁数据进行比较,判断综合增量报告指标数据是否小于等于代码扫描门禁数据,若综合增量报告指标数据小于等于代码扫描门禁数据,则生成放行对应的需求信息的增量代码扫描报告,若综合增量报告指标数据大于代码扫描门禁数据,生成不放行对应的需求信息的增量代码扫描报告。

7.根据权利要求1所述的基于SonarQube的增量扫描报告生成方法,其特征在于,还包括:

8.基于SonarQube的增量扫描报告生成装置,用于增量扫描平台、与增量扫描平台交互的代码仓库托管平台以及与增量扫描平台交互的SonarQube平台,其特征在于,包括:

9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可以在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述方法的步骤。

10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。

...

【技术特征摘要】

1.基于sonarqube的增量扫描报告生成方法,其特征在于,用于增量扫描平台、与增量扫描平台交互的代码仓库托管平台以及与增量扫描平台交互的sonarqube平台,该方法包括:

2.根据权利要求1所述的基于sonarqube的增量扫描报告生成方法,其特征在于,所述代码合并请求包括需求分支信息和上线分支信息,其中,所述需求分支信息包括多个代码分支信息,所述上线分支信息包括多个发布分支信息。

3.根据权利要求2所述的基于sonarqube的增量扫描报告生成方法,其特征在于,所述增量扫描平台根据代码合并请求,对本地代码仓库中的变动文件进行代码裁剪,生成用于静态分析的文件,具体包括:

4.根据权利要求3所述的基于sonarqube的增量扫描报告生成方法,其特征在于,所述修改参数数据包括新增代码行数范围信息、删除代码行数范围信息和修改代码行数范围信息。

5.根据权利要求3所述的基于sonarqube的增量扫描报告生成方法,其特征在于,所述sonarscanner拉取sonarqube平台中的sonarqube项目并触发扫描,生成扫描信息,具体包括:sonarscanner拉取sonarqube平台中sonarqube项目并触发扫描,基于所述sonarqube项目对应的扫描规则信息和增量代码扫描报告中预设的增量报告指标信息,对增量代码进行扫描处理,并在扫描过程中,轮询获取扫描规则信息中包含的代码扫描门禁数据,生成包含多个增量报告指...

【专利技术属性】
技术研发人员:魏士超张晓宇王凌霄张会义
申请(专利权)人:河南中原消费金融股份有限公司
类型:发明
国别省市:

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

1