一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Jenkins+Sonar实现Java项目的编译和扫描方法与流程

2021-11-17 23:55:00 来源:中国专利 TAG:

一种基于jenkins sonar实现java项目的编译和扫描方法
技术领域
1.本发明涉及计算机程序技术领域,特别涉及一种基于jenkins sonar实现java项目的编译和扫描方法。


背景技术:

2.当前系统项目使用jenkins sonar实现自动化在线编译与代码扫描,在项目编译之后,无论成功或失败,根据jenkins的配置自动调用sonar对编译后的项目进行代码扫描,随后在指定sonarqube页面展示代码扫描结果,代码扫描结果包括代码bug、安全热点数量以及最直观的sonar quality gate(质量门)是否为通过状态。
3.但是,目前无论sonar扫描后的质量门是通过或不通过状态,对于jenkins编译状态均无影响,仅靠开发人员自觉查看sonar扫描状态和修复相关问题,存在较大的不确定性。因此很容易导致问题代码堆积到无法修复的地步,严重时还可能会导致项目整体推倒重构。
4.因此有必要提供一种基于jenkins sonar实现java项目的编译和扫描方法,以督促开发人员在较早的时间节点发现并修复问题代码,避免问题代码堆积以至于到无法修复的地步。


技术实现要素:

5.本发明的目的在于提供一种基于jenkins sonar实现java项目的编译和扫描方法,以督促开发人员在较早的时间节点发现并修复问题代码,避免问题代码堆积以至于到无法修复的地步。
6.为了解决达到上述目的,本发明提供了一种基于jenkins sonar实现java项目的编译和扫描方法,包括以下步骤:
7.s1:开发人员提交代码至代码仓库;
8.s2:采用jenkins对提交的代码进行编译;
9.s3:判断编译是否成功,若成功,则继续执行s4,若不成功,则返回s1;
10.s4:开发人员提交的代码没有编译问题,生成编译后的class文件;
11.s5:拉起sonar进程,对class文件进行扫描;
12.s6:查询并解析扫描结果,判断扫描结果中的扫描质量门是否为通过状态,若是,则判定编译和扫描成功,若否,则认定为编译失败,返回s1。
13.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,判断编译是否成功的方式包括:
14.采用项目对象模型进行判断,即采用maven工具进行判断。
15.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,在s5之后,s6之前,还包括以下步骤:
16.对sonar的扫描结果进行落库持久化操作。
17.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,s3中,若判断编译不成功,则在jenkins控制台打印日志中说明采用jenkins编译失败。
18.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,s6中,认定为编译失败之后,还包括以下步骤:
19.在jenkins控制台打印日志中说明sonar扫描失败导致编译失败。
20.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,进行编译的代码和进行扫描的class文件均以项目为单位,若编译和/或扫描不成功,则为对应的项目编译失败。
21.在本发明所提供的基于jenkins sonar实现java项目的编译和扫描方法中,通过在编译和扫描出现失败时强制开发人员解决对应问题,即在问题出现的早期阶段,解决问题的成本最低阶段,处理并修复问题代码,增加了项目的稳定性,节约了开发成本。
附图说明
22.图1为本发明实施例提供的编译和扫描方法的流程图。
具体实施方式
23.下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
24.如果本文所述的方法包括一系列步骤,则本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法中。
25.目前无论sonar扫描后的质量门是通过或不通过状态,对于jenkins编译状态均无影响,仅靠开发人员自觉查看sonar扫描状态和修复相关问题,存在较大的不确定性。因此很容易导致问题代码堆积到无法修复的地步,严重时还可能会导致项目整体推倒重构。
26.因此有必要提供一种基于jenkins sonar实现java项目的编译和扫描方法,如图1所示,图1为本发明实施例提供的编译和扫描方法的流程图,所述编译和扫描方法包括以下步骤:
27.s1:开发人员提交代码至代码仓库;
28.s2:采用jenkins对提交的代码进行编译,没有编译的项目不能继续流转到测试流程;
29.s3:判断编译是否成功,若成功,则继续执行s4,若不成功,则返回s1;
30.s4:开发人员提交的代码没有编译问题,生成编译后的class文件;
31.s5:拉起sonar进程,对class文件进行扫描;
32.s6:查询并解析扫描结果,判断扫描结果中的扫描质量门是否为通过状态,若是,则判定编译和扫描成功,若否,则认定为编译失败,返回s1。
33.本发明在jenkins项目编译的过程中,当该项目sonar扫描质量门未通过时,认定为编译失败,只有在开发人员确认并解决sonar扫描出的问题后,提交代码重新编译,并且在sonar扫描质量门为通过状态时,该项目jenkins编译才算成功,只有jenkins编译成功的
项目才可以继续执行上线流程直到最终运行于生产环境。
34.通常的,随着代码流动到测试阶段和上线阶段,解决问题代码的成本也会越来越高,而到生产环境出现问题时带来的损失和将其解决的成本将会是不可估量的。采用本发明的方法,在问题出现的早期阶段,即解决问题的成本最低阶段,就可以用sonar代码编写规范扫描开发人员提交的代码,并强制要求解决出现的问题,以增加项目的稳定性,节约开发成本。
35.优选的,判断编译是否成功的方式包括:采用项目对象模型进行判断,即采用maven工具进行判断。
36.进一步的,s3中,若判断编译不成功,则在jenkins控制台打印日志中说明采用jenkins编译失败。并返回s1,此时开发人员需要自检代码,发现错误并修复,重新提交代码并编译。
37.s4中,此时jenkins编译成功,但仅仅证明开发人员提交的代码没有明显的编译问题,不能证明代码没有bug或安全漏洞,需要使用sonar进一步扫描项目编译产生的class文件,以深度分析。因此在s5中采用sonar对class文件进行扫描。
38.优选的,在s5之后,s6之前,还包括以下步骤:对sonar的扫描结果进行落库持久化操作,以方便后续的查询操作以及页面数据渲染工作。
39.进一步的,s6中,可以采用sonarwebapi对已持久化的sonar扫描结果进行查询,并解析扫描结果。首先判断sonar扫描质量门是否为通过状态。如果为“通过”状态,则判定编译和扫描成功,并继续流转到下一步的测试流程。如果为“不通过”状态,jenkins中该项目会被代码逻辑强制置为“编译失败”状态,并在jenkins控制台打印日志中说明为sonar扫描失败导致编译失败,此时虽然代码的确编译通过了,但是由于sonar扫描未通过,因此本次jenkins编译失败,无法继续将该代码流转到下一步的测试流程,需要返回到s1。开发人员在发现编译失败且是由于sonar扫描失败导致的编译失败后,需要登录sonarqube网页,在对应项目的详情页确认问题代码位置,并着手解决,重新提交代码并开始第二次jenkins编译。
40.可选的,在所述基于jenkins sonar实现java项目的编译和扫描方法中,进行编译的代码和进行扫描的class文件均以项目为单位,若编译和/或扫描不成功,则为对应的项目编译失败。
41.综上,在本发明所提供的基于jenkins sonar实现java项目的编译和扫描方法中,通过在编译和扫描出现失败时强制开发人员解决对应问题,即在问题出现的早期阶段,解决问题的成本最低阶段,处理并修复问题代码,增加了项目的稳定性,节约了开发成本。
42.上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献