CN110704309A - 一种自动化代码质量检查方法及系统 - Google Patents
一种自动化代码质量检查方法及系统 Download PDFInfo
- Publication number
- CN110704309A CN110704309A CN201910867398.1A CN201910867398A CN110704309A CN 110704309 A CN110704309 A CN 110704309A CN 201910867398 A CN201910867398 A CN 201910867398A CN 110704309 A CN110704309 A CN 110704309A
- Authority
- CN
- China
- Prior art keywords
- code
- branch
- quality inspection
- branches
- scanning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007689 inspection Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000008859 change Effects 0.000 claims abstract description 58
- 238000012544 monitoring process Methods 0.000 claims abstract description 21
- 238000012216 screening Methods 0.000 claims abstract description 14
- 230000010354 integration Effects 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Factory Administration (AREA)
Abstract
本发明公开了一种自动化代码质量检查方法及系统,方法包括对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;收集并分析代码扫描结果,生成代码质量检查报告并输出代码质量检查报告。本发明实现了自动化高效的代码质量检查。
Description
技术领域
本发明涉及代码管理技术领域,尤其涉及一种自动化代码质量检查方法及系统。
背景技术
软件代码就是程序员用开发工具所支持的语言写出来的源文件。高质量的代码需具备可读性、可维护性和可变更性三个特征。
在实际的应用程序开发过程中,每个软件开发项目往往需要由若干开发人员共同完成,因此将软件开发项目分解成不同分支来开发,不同的开发人员负责软件开发项目的不同分支,因此,软件开发项目中的不同部分的更新和维护时间也会不同,这就需要经常对软件开发项目中的增量代码或全量代码进行代码质量检查,以便不断地对源代码进行系统性检查,查找系统缺陷,保证软件总体质量,现有的代码质量检查仅支持手动触发的方式,从而导致无法在代码提交和软件应用发布的第一时间触发代码质量检查,代码质量检查时效性差,且检查效率低,无法适应行业需求。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,特别创新地提出了一种代码质量检查方法及系统,能够自动监听代码数据库中的代码分支是否发生变更,并定时触发对发生变更的代码分支的扫描和分析,从而实现自动化高效的代码质量检查,解决现有的手动触发代码质量检查带来的代码质量检查时效性差,检查效率低,无法适应行业需求的问题。
为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种自动化代码质量检查方法,所述方法包括如下步骤:
对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告。
优选地,所述调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果包括:
GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对所述项目代码进行代码扫描;
基于所述代码扫描生成代码扫描结果,所述代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
优选地,所述收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告包括:
SonarQube代码质量管理平台的client端将所述代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对所述代码扫描结果进行结果分析,并基于所述结果分析生成代码质量检查报告;
将所述代码质量检查报告以邮件形式发送至代码管理员。
优选地,所述标识包括代码分支编号和对应的代码分支变更时间。
优选地,所述方法还包括:
当所述扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
根据本发明的第二个方面,本发明提供了一种自动化代码质量检查系统,所述系统包括:
代码分支标识模块,用于对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
代码变更监听模块,用于监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
分支标识比对模块,用于定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
代码扫描调用模块,用于调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
扫描结果处理模块,用于收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告。
优选地,所述代码扫描调用模块具体用于:
GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对所述项目代码进行代码扫描;
基于所述代码扫描生成代码扫描结果,所述代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
优选地,所述扫描结果处理模块具体用于:
SonarQube代码质量管理平台的client端将所述代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对所述代码扫描结果进行结果分析,并基于所述结果分析生成代码质量检查报告;
将所述代码质量检查报告以邮件形式发送至代码管理员。
优选地,所述标识包括代码分支编号和对应的代码分支变更时间。
优选地,所述系统还包括:
代码数据更新模块,用于当所述扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
由以上方案可知,本发明提供了一种自动化代码质量检查方法及系统,所述方法包括对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告。本发明通过对当前Gitlab代码仓库中所有的代码分支进行初始的标识,然后监听代码分支的变更情况,并定时触发对发生代码变更的代码分支进行扫描,通过分析扫描结果形成代码质量检查报告,从而实现自动化高效的代码质量检查,有效解决手动触发代码质量检查带来的代码质量检查时效性差,检查效率低,无法适应行业需求的问题。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明提供的一种优选实施方式中自动化代码质量检查方法的流程示意图;
图2是本发明提供的一种优选实施方式中代码扫描方法的流程示意图;
图3是本发明提供的一种优选实施方式中自动化代码质量检查系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
为了实现本发明的上述目的,根据本发明的第一个方面,本发明提供了一种自动化代码质量检查方法,如图1所示,该方法包括如下步骤:
S101,对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
由于当前的软件开发项目一般分解成不同分支来开发,不同的开发人员负责软件开发项目的不同分支,从而导致在软件开发项目中的不同部分的更新和维护时间也会不同,这就需要经常对软件开发项目中的增量代码或全量代码进行代码质量检查。在进行软件项目的开发时,通过Gitlab代码仓库存储以代码分支的形式存储不同代码开发人员的项目代码,因此,在进行代码质量检查时,首先需要将当前Gitlab代码仓库中所有的代码分支进行初始标识,其中,每个代码分支对应不同的标识,也就是说,标识是用于表示该代码分支的一个身份序列号,该标识可以是按代码分支创建的时间的先后顺序进行对应创建。
具体地,该标识包括代码分支编号和对应的代码分支变更时间,代码分支编号按代码分支初次创建时间进行排序,例如可以是0001,代码分支变更时间按年月日时分秒的顺序进行编排,例如,该代码分支是2018年1月1日9时12分25秒创建或变更的,则该代码分支的标识的代码分支变更时间为20180101091235,该代码分支的标识为代码编号加对应的代码分支变更时间,即该代码分支的标识为0001-20180101091235。在对当前Gitlab代码仓库中的代码分支进行标识时,为每一个代码分支配置一个唯一的标识。对于新增的代码分支,也按照该标识规则来进行代码分支的标识。
S102,监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
在标识好Gitlab代码仓中所有的代码分支后,通过Gitlab代码仓中的监听组件实时监听所有的代码分支的变更情况,当原有的代码分支发生代码变更或者有新增的代码分支创建时,则重新对发生变更的代码分支进行标识,对于原有的代码分支发生变更时,直接将该代码分支的标识中的代码分支变更时间部分变更为与改代码分支最新变更时间对应的时间序列,若发生变更的代码分支为新创建代码分支,则按照上述的代码分支的顺序编号规则编排代码分支编号,然后在加上对应的代码分支变更时间,即组成了该新创建的代码分支的标识。
S103,定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
预设一定的时间间隔,例如5分钟,将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,判断出哪些代码分支标识发生了变更,然后将发生了变更的代码分支筛选出来。具体地,进行代码分支的标识的比对时,首先比对代码分支的标识的代码分支编号,看是否有相对于前一比对时刻有新增的代码分支,若有,则筛选出来,新增代码分支筛选完后,比对当前时刻的包含同一代码分支编号的标识的代码分支变更时间,判断代码分支变更时间是否有变动,若有,则表明该代码分支发生了局部的代码变更,同样将该代码分支筛选出来。定时比对筛选发生变更的代码分支的标识,相对于比对发生变更的代码分支本身,可以减少比对运行时间,提高筛选发生变更的代码分支的效率,也避免了现有的代码质量检查方法中一直进行代码变更扫描而造成的扫描任务一直运行带来的系统超负荷运行问题,有利于提高系统性能。
S104,调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
将定时比对筛选出来的代码分支的标识对应的代码分支进行代码扫描,通过Gitlab代码仓库调用代码扫描工具执行,并在扫描完成后生成代码扫描结果。通过打码扫描工具实时对定时比对筛选出来的代码分支进行代码扫描,从而实时检查发生变更的代码分支的代码质量。
S105,收集并分析代码扫描结果,生成代码质量检查报告并输出代码质量检查报告。
在代码扫描完成并生成代码扫描结果后,对各个发生变更的代码分支的代码扫描结果进行收集和分析,并生成相应的代码质量检查报告,将代码质量检查报告输出展示,以便项目管理人员或代码管理人员实时了解发生变更的代码分支的代码质量情况,便于后续进行实时调整。
具体地,在本实施方式中,如图2所示,步骤S104中代码扫描步骤具体包括:
S1041,GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
S1042,Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
S1043,Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对项目代码进行代码扫描;
S1044,基于代码扫描生成代码扫描结果,代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,用于持续的软件版本发布或测试,并监控外部调用执行的工作。利用GitLab代码仓库的Webhook网络调用功能,将项目代码的变更事件通知到Jenkins,Jenkins再调用SonarQube的代码扫描服务,最终将代码扫描结果收集分析并可视化,从而实现了对变更代码的自动化代码扫描。
在本实施方式中,步骤S105具体包括:
SonarQube代码质量管理平台的client端将代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对代码扫描结果进行结果分析,并基于结果分析生成代码质量检查报告;
将代码质量检查报告以邮件形式发送至代码管理员。
这样便于代码管理员能够实时了解到发生变更的代码分支的质量情况。
在本实施方式中,所述自动化代码质量检查方法还包括:
当扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
这样便于减少发生代码变更后的代码分支对应的旧代码分支占用GitLab代码仓库存储空间,避免无用数据过多造成系统卡滞,能够进一步提高代码质量检查系统的运行效率。
由以上方案可知,本发明提供了一种自动化代码质量检查方法,首先对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;然后监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;接着定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;接着调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;最后收集并分析代码扫描结果,生成代码质量检查报告并输出代码质量检查报告。本发明通过对当前Gitlab代码仓库中所有的代码分支进行初始的标识,然后监听代码分支的变更情况,并定时触发对发生代码变更的代码分支进行扫描,通过分析扫描结果形成代码质量检查报告,从而实现自动化高效的代码质量检查,有效解决手动触发代码质量检查带来的代码质量检查时效性差,检查效率低,无法适应行业需求的问题。
根据本发明的第二个方面,本发明提供了一种自动化代码质量检查系统,如图3所示,该系统包括:
代码分支标识模块201,用于对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
由于当前的软件开发项目一般分解成不同分支来开发,不同的开发人员负责软件开发项目的不同分支,从而导致在软件开发项目中的不同部分的更新和维护时间也会不同,这就需要经常对软件开发项目中的增量代码或全量代码进行代码质量检查。在进行软件项目的开发时,通过Gitlab代码仓库存储以代码分支的形式存储不同代码开发人员的项目代码,因此,在进行代码质量检查时,首先需要将当前Gitlab代码仓库中所有的代码分支进行初始标识,其中,每个代码分支对应不同的标识,也就是说,标识是用于表示该代码分支的一个身份序列号,该标识可以是按代码分支创建的时间的先后顺序进行对应创建。
具体地,该标识包括代码分支编号和对应的代码分支变更时间,代码分支编号按代码分支初次创建时间进行排序,例如可以是0001,代码分支变更时间按年月日时分秒的顺序进行编排,例如,该代码分支是2018年1月1日9时12分25秒创建或变更的,则该代码分支的标识的代码分支变更时间为20180101091235,该代码分支的标识为代码编号加对应的代码分支变更时间,即该代码分支的标识为0001-20180101091235。在对当前Gitlab代码仓库中的代码分支进行标识时,为每一个代码分支配置一个唯一的标识。对于新增的代码分支,也按照该标识规则来进行代码分支的标识。
代码变更监听模块202,用于监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
在标识好Gitlab代码仓中所有的代码分支后,通过Gitlab代码仓中的监听组件实时监听所有的代码分支的变更情况,当原有的代码分支发生代码变更或者有新增的代码分支创建时,则重新对发生变更的代码分支进行标识,对于原有的代码分支发生变更时,直接将该代码分支的标识中的代码分支变更时间部分变更为与改代码分支最新变更时间对应的时间序列,若发生变更的代码分支为新创建代码分支,则按照上述的代码分支的顺序编号规则编排代码分支编号,然后在加上对应的代码分支变更时间,即组成了该新创建的代码分支的标识
分支标识比对模块203,用于定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
预设一定的时间间隔,例如5分钟,将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,判断出哪些代码分支标识发生了变更,然后将发生了变更的代码分支筛选出来。具体地,进行代码分支的标识的比对时,首先比对代码分支的标识的代码分支编号,看是否有相对于前一比对时刻有新增的代码分支,若有,则筛选出来,新增代码分支筛选完后,比对当前时刻的包含同一代码分支编号的标识的代码分支变更时间,判断代码分支变更时间是否有变动,若有,则表明该代码分支发生了局部的代码变更,同样将该代码分支筛选出来。定时比对筛选发生变更的代码分支的标识,相对于比对发生变更的代码分支本身,可以减少比对运行时间,提高筛选发生变更的代码分支的效率,也避免了现有的代码质量检查方法中一直进行代码变更扫描而造成的扫描任务一直运行带来的系统超负荷运行问题,有利于提高系统性能。
代码扫描调用模块204,用于调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
将定时比对筛选出来的代码分支的标识对应的代码分支进行代码扫描,通过Gitlab代码仓库调用代码扫描工具执行,并在扫描完成后生成代码扫描结果。通过打码扫描工具实时对定时比对筛选出来的代码分支进行代码扫描,从而实时检查发生变更的代码分支的代码质量。
扫描结果处理模块205,用于收集并分析代码扫描结果,生成代码质量检查报告并输出代码质量检查报告。
在代码扫描完成并生成代码扫描结果后,对各个发生变更的代码分支的代码扫描结果进行收集和分析,并生成相应的代码质量检查报告,将代码质量检查报告输出展示,以便项目管理人员或代码管理人员实时了解发生变更的代码分支的代码质量情况,便于后续进行实时调整。
在本实施方式中,代码扫描调用模块204具体用于:
GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对项目代码进行代码扫描;
基于代码扫描生成代码扫描结果,代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,用于持续的软件版本发布或测试,并监控外部调用执行的工作。利用GitLab代码仓库的Webhook网络调用功能,将项目代码的变更事件通知到Jenkins,Jenkins再调用SonarQube的代码扫描服务,最终将代码扫描结果收集分析并可视化,从而实现了对变更代码的自动化代码扫描。
在本实施方式中,扫描结果处理模块205具体用于:
SonarQube代码质量管理平台的client端将代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对代码扫描结果进行结果分析,并基于结果分析生成代码质量检查报告;
将代码质量检查报告以邮件形式发送至代码管理员。
这样便于代码管理员能够实时了解到发生变更的代码分支的质量情况。
在本实施方式中,所述自动化代码质量检查系统还包括:
代码数据更新模块,用于当扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
这样便于减少发生代码变更后的代码分支对应的旧代码分支占用GitLab代码仓库存储空间,避免无用数据过多造成系统卡滞,能够进一步提高代码质量检查系统的运行效率。
由以上方案可知,本发明提供了一种自动化代码质量检查系统,该系统运行时,首先对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;然后监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;接着定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;接着调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;最后收集并分析代码扫描结果,生成代码质量检查报告并输出代码质量检查报告。本发明通过对当前Gitlab代码仓库中所有的代码分支进行初始的标识,然后监听代码分支的变更情况,并定时触发对发生代码变更的代码分支进行扫描,通过分析扫描结果形成代码质量检查报告,从而实现自动化高效的代码质量检查,有效解决手动触发代码质量检查带来的代码质量检查时效性差,检查效率低,无法适应行业需求的问题。
本实施例中,所述自动化代码质量检查系统集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种自动化代码质量检查方法,其特征在于,所述方法包括:
对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告。
2.根据权利要求1所述的自动化代码质量检查方法,其特征在于,所述调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果包括:
GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对所述项目代码进行代码扫描;
基于所述代码扫描生成代码扫描结果,所述代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
3.根据权利要求2所述的自动化代码质量检查方法,其特征在于,所述收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告包括:
SonarQube代码质量管理平台的client端将所述代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对所述代码扫描结果进行结果分析,并基于所述结果分析生成代码质量检查报告;
将所述代码质量检查报告以邮件形式发送至代码管理员。
4.根据权利要求1-3任意一项所述的自动化代码质量检查方法,其特征在于,所述标识包括代码分支编号和对应的代码分支变更时间。
5.根据权利要求4所述的自动化代码质量检查方法,其特征在于,所述方法还包括:
当所述扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
6.一种自动化代码质量检查系统,其特征在于,所述系统包括:
代码分支标识模块,用于对当前Gitlab代码仓库中所有的代码分支进行初始标识,每个代码分支对应不同的标识;
代码变更监听模块,用于监听Gitlab代码仓中所有的代码分支是否发生代码变更,当有代码分支发生代码变更时,变更对应的代码分支的标识;
分支标识比对模块,用于定时将当前时刻所有代码分支的标识与Gitlab代码仓库中所有的代码分支的初始的标识进行比对,并筛选出发生变更的代码分支的标识;
代码扫描调用模块,用于调用代码扫描工具对筛选出的代码分支的标识对应的代码分支进行代码扫描,得到代码扫描结果;
扫描结果处理模块,用于收集并分析代码扫描结果,生成代码质量检查报告并输出所述代码质量检查报告。
7.根据权利要求6所述的自动化代码质量检查系统,其特征在于,所述代码扫描调用模块具体用于:
GitLab代码仓库利用webhook功能网络调用Jenkins持续集成工具;
Jenkins持续集成工具收到GitLab代码仓库调用时拉取GitLab代码仓库中筛选出的发生变更的代码分支的标识对应的代码分支的项目代码;
Jenkins持续集成工具调用在与Jenkins持续集成工具部署在同一服务器上的SonarQube代码质量管理平台的client端对所述项目代码进行代码扫描;
基于所述代码扫描生成代码扫描结果,所述代码扫描结果用于表征发生代码变更的代码分支中的项目代码是否存在问题。
8.根据权利要求7所述的自动化代码质量检查系统,其特征在于,所述扫描结果处理模块具体用于:
SonarQube代码质量管理平台的client端将所述代码扫描结果发送至SonarQube代码质量管理平台的Server端;
SonarQube代码质量管理平台的Server端对所述代码扫描结果进行结果分析,并基于所述结果分析生成代码质量检查报告;
将所述代码质量检查报告以邮件形式发送至代码管理员。
9.根据权利要求6-8任意一项所述的自动化代码质量检查系统,其特征在于,所述标识包括代码分支编号和对应的代码分支变更时间。
10.根据权利要求9所述的自动化代码质量检查系统,其特征在于,所述系统还包括:
代码数据更新模块,用于当所述扫描结果表征发生代码变更的代码分支没有问题时,将变更后的代码分支的项目代码和对应的标识替换掉变更前的代码分支的项目代码和对应的标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910867398.1A CN110704309A (zh) | 2019-09-12 | 2019-09-12 | 一种自动化代码质量检查方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910867398.1A CN110704309A (zh) | 2019-09-12 | 2019-09-12 | 一种自动化代码质量检查方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704309A true CN110704309A (zh) | 2020-01-17 |
Family
ID=69195348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910867398.1A Pending CN110704309A (zh) | 2019-09-12 | 2019-09-12 | 一种自动化代码质量检查方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704309A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256580A (zh) * | 2020-10-23 | 2021-01-22 | 济南浪潮数据技术有限公司 | 一种代码扫描方法、装置、设备及存储介质 |
CN112306516A (zh) * | 2020-02-24 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 用于更新代码的方法和装置 |
CN112817848A (zh) * | 2021-01-28 | 2021-05-18 | 北京达佳互联信息技术有限公司 | 一种测试信息展示方法、装置、电子设备和存储介质 |
CN112925552A (zh) * | 2021-02-26 | 2021-06-08 | 北京百度网讯科技有限公司 | 代码处理方法、装置、设备及存储介质 |
CN113176882A (zh) * | 2021-04-29 | 2021-07-27 | 广州嘉为科技有限公司 | 实现应用服务端规则检查代码方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160274903A1 (en) * | 2015-03-17 | 2016-09-22 | Wal-Mart Stores, Inc. | Systems and methods for software scanning tool |
CN106528427A (zh) * | 2016-11-24 | 2017-03-22 | 上海携程商务有限公司 | 代码质量检查方法和系统 |
CN109002295A (zh) * | 2018-10-19 | 2018-12-14 | 武汉斗鱼网络科技有限公司 | 一种静态代码扫描方法、系统、服务器及存储介质 |
CN109684215A (zh) * | 2018-12-25 | 2019-04-26 | 中国科学院电子学研究所苏州研究院 | 一种自动化软件系统质量检查和快速迭代方法 |
CN110188049A (zh) * | 2019-06-10 | 2019-08-30 | 北京阿尔山金融科技有限公司 | 容器管理方法、装置以及电子设备 |
-
2019
- 2019-09-12 CN CN201910867398.1A patent/CN110704309A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160274903A1 (en) * | 2015-03-17 | 2016-09-22 | Wal-Mart Stores, Inc. | Systems and methods for software scanning tool |
CN106528427A (zh) * | 2016-11-24 | 2017-03-22 | 上海携程商务有限公司 | 代码质量检查方法和系统 |
CN109002295A (zh) * | 2018-10-19 | 2018-12-14 | 武汉斗鱼网络科技有限公司 | 一种静态代码扫描方法、系统、服务器及存储介质 |
CN109684215A (zh) * | 2018-12-25 | 2019-04-26 | 中国科学院电子学研究所苏州研究院 | 一种自动化软件系统质量检查和快速迭代方法 |
CN110188049A (zh) * | 2019-06-10 | 2019-08-30 | 北京阿尔山金融科技有限公司 | 容器管理方法、装置以及电子设备 |
Non-Patent Citations (1)
Title |
---|
曾新励;: "基于SonarQube平台提升企业软件项目质量的应用研究" * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306516A (zh) * | 2020-02-24 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 用于更新代码的方法和装置 |
CN112256580A (zh) * | 2020-10-23 | 2021-01-22 | 济南浪潮数据技术有限公司 | 一种代码扫描方法、装置、设备及存储介质 |
CN112256580B (zh) * | 2020-10-23 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种代码扫描方法、装置、设备及存储介质 |
CN112817848A (zh) * | 2021-01-28 | 2021-05-18 | 北京达佳互联信息技术有限公司 | 一种测试信息展示方法、装置、电子设备和存储介质 |
CN112817848B (zh) * | 2021-01-28 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 一种测试信息展示方法、装置、电子设备和存储介质 |
CN112925552A (zh) * | 2021-02-26 | 2021-06-08 | 北京百度网讯科技有限公司 | 代码处理方法、装置、设备及存储介质 |
CN112925552B (zh) * | 2021-02-26 | 2023-07-28 | 北京百度网讯科技有限公司 | 代码处理方法、装置、设备及存储介质 |
CN113176882A (zh) * | 2021-04-29 | 2021-07-27 | 广州嘉为科技有限公司 | 实现应用服务端规则检查代码方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704309A (zh) | 一种自动化代码质量检查方法及系统 | |
CN111858120B (zh) | 故障预测方法、装置、电子设备及存储介质 | |
CN109274526B (zh) | 测试缺陷自动预警方法、装置、计算机设备及存储介质 | |
CN110807595B (zh) | 任务分发方法和系统 | |
CN110943851B (zh) | 基于微服务的告警处理方法、装置及电子设备 | |
EP2775361B1 (de) | System und Verfahren zur Ereignisprotokollierung in einer technischen Anlage oder einem technischen Prozess | |
CN109617745B (zh) | 告警预测方法、装置、系统及存储介质 | |
CN109254912A (zh) | 一种自动化测试的方法及装置 | |
CN111176680B (zh) | 基于物联网的企业终端管理方法、系统、设备及介质 | |
CN111143304A (zh) | 一种基于请求链路的微服务系统异常日志分析方法 | |
CN113762914A (zh) | 预警审计方法及相关设备 | |
CN104967532A (zh) | Toc技术运维系统及应用方法 | |
CN117492772A (zh) | 内网环境中补丁安装策略的生成方法及其装置、电子设备 | |
CN115982011A (zh) | 一种面向软件质量提升的持续自动测试平台 | |
CN116029695A (zh) | 轨道交通巡检工单处理方法、装置、电子设备及存储介质 | |
CN113676356A (zh) | 报警信息处理方法、装置、电子设备及可读存储介质 | |
CN102915028A (zh) | Pcs7软件系统的诊断系统和诊断方法 | |
CN112256594A (zh) | 一种项目信息处理方法、装置和电子设备 | |
CN113052493A (zh) | 效能监督系统及工作方法 | |
CN112488482B (zh) | 基于指标体系的自动化作业方法及系统 | |
CN117743007A (zh) | 一种数据异常监控和自动分析处理的方法、装置及设备 | |
CN114302438B (zh) | 网元的异常处理方法、装置、设备以及存储介质 | |
EP1736870A1 (de) | Aktualisierungs-Management-System und Verfahren zum Bereitstellen von Aktualisierungs-Dateien unter Berücksichtigung von Nutzungsintensitätsdaten | |
CN116820551A (zh) | 一种基线管理方法、装置、电子设备及存储介质 | |
CN115981707A (zh) | 接口台账管理方法、装置及电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |
|
RJ01 | Rejection of invention patent application after publication |