CN109726123A - 代码质量的检测系统和检测方法 - Google Patents
代码质量的检测系统和检测方法 Download PDFInfo
- Publication number
- CN109726123A CN109726123A CN201811563242.6A CN201811563242A CN109726123A CN 109726123 A CN109726123 A CN 109726123A CN 201811563242 A CN201811563242 A CN 201811563242A CN 109726123 A CN109726123 A CN 109726123A
- Authority
- CN
- China
- Prior art keywords
- code
- quality
- detected
- testing result
- detection
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码质量的检测系统和检测方法,检测系统包括:代码仓库管理系统,用于获取多段代码并存储;代码质量管理平台,用于在满足预设触发条件时,从代码仓库管理系统中获取待检测代码,并对待检测代码进行代码质量检测生成代码质量检测结果;SonarQube平台,用于提供代码质量检测结果;项目质量管理平台,用于根据代码质量检测结果确定预设代码操作。本发明具有如下优点:用户在使用项目管理项目发布软件时能获取到软件的代码质量,将代码质量融入到软件开发测试流程中,无需用户手动运行。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种代码质量的检测系统和检测方法。
背景技术
软件质量越来越为人们所热切关注。其中,静态代码分析通过扫描源程序的手段来发现错误,并评估代码质量,进而为改善代码质量提供了一个很好的参考标准,是软件质量检测的一个重要手段。
代码检测工具使用相对简单,具有很好的应用价值。然而代码检测工具通常只能从某一侧面去测试代码的质量。要全面进行评价则需要使用多个工具才能实现,而且在熟悉度量工具和掌握测试流程方面对测试人员要求较高。同时用户也希望能将代码质量评估与软件开发发布集成,自动阻止不良代码上线。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的第一个目的在于提出一种代码质量的检测系统,用户在使用项目管理项目发布软件时能获取到软件的代码质量,将代码质量融入到软件开发测试流程中,无需用户手动运行。
为了实现上述目的,本发明的实施例公开了一种代码质量的检测系统,包括:代码仓库管理系统,用于获取多段代码并存储;代码质量管理平台,用于在满足预设触发条件时,从所述代码仓库管理系统中获取待检测代码,并对所述待检测代码进行代码质量检测生成代码质量检测结果,其中,所述代码质量管理平台具体用于根据所述待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或不合格,或所述代码质量管理平台根据所述待检测代码中的Bug情况判断代码质量检测结果合格或不合格;SonarQube平台,用于提供所述代码质量检测结果;项目质量管理平台,用于根据所述代码质量检测结果确定预设代码操作。
根据本发明实施例的代码质量的检测系统,用户在使用项目管理项目发布软件时能获取到软件的代码质量,将代码质量融入到软件开发测试流程中,无需用户手动运行。
另外,根据本发明上述实施例的代码质量的检测系统还可以具有如下附加的技术特征:
可选地,所述预设触发条件包括系统达到预设的触发时间或所述预设触发条件包括系统状态满足预设的触发事件状态。
可选地,所述代码质量管理平台还用于根据所述待检测代码中的Bug情况生成代码质量得分。
可选地,所述项目质量管理平台还用于在本地保存所述代码质量得分。
可选地,所述代码质量管理平台通过对所述待检测代码进行编译,并在所述编译的过程中进行代码规范检测,并通过源码分析器对所述待检测代码进行检测,以生成所述代码质量检测结果;或者,所述代码质量管理平台通过调用预设的外部代码检测工具对所述待检测代码进行代码质量检测以生成所述代码质量检测结果。
可选地,所述预设代码操作包括合并代码、编译代码和发布代码中的至少一项。
发明的第二个目的在于提出一种代码质量的检测方法,用户在使用项目管理项目发布软件时能获取到软件的代码质量,将代码质量融入到软件开发测试流程中,无需用户手动运行。
为了实现上述目的,本发明的实施例公开了一种代码质量的检测方法,包括以下步骤:获取多段代码并存储;当满足预设触发条件时,从所述多段代码中获取待检测代码;对所述待检测代码的进行质量检测生成代码质量检测结果;根据所述代码质量检测结果确定预设代码操作;其中,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤包括:根据所述待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或不合格,或根据所述待检测代码中的Bug情况判断代码质量检测结果合格或不合格。
根据本发明实施例的代码质量的检测方法,用户在使用项目管理项目发布软件时能获取到软件的代码质量,将代码质量融入到软件开发测试流程中,无需用户手动运行。
另外,根据本发明上述实施例的代码质量的检测方法还可以具有如下附加的技术特征:
可选地,所述预设触发条件包括系统达到预设的触发时间或系统状态满足预设的触发事件状态。
可选地,还包括:根据所述待检测代码中的Bug情况生成代码质量得分。
可选地,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤还包括:通过对所述待检测代码进行编译,并在所述编译的过程中进行代码规范检测,并通过源码分析器对所述待检测代码进行检测,以生成所述代码质量检测结果;其中,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤还包括:通过调用预设的外部代码检测工具对所述待检测代码进行代码质量检测以生成所述代码质量检测结果。
可选地,所述预设代码操作包括合并代码、编译代码和发布代码中的至少一项。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的代码质量的检测系统的结构框图;
图2是本发明一个实施例的代码质量的检测方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
以下结合附图描述本发明的代码质量的检测系统。
图1是本发明一个实施例的代码质量的检测系统的结构框图。如图1所示,本发明实施例的代码质量的检测系统,包括代码仓库管理系统、代码质量管理平台、SonarQube平台和项目质量管理平台。
其中,代码仓库管理系统用于获取多段代码并存储。一个或多个用户向代码仓库管理系统提供代码,这样代码仓库管理系统就可以存储多段代码。
代码质量管理平台用于在满足预设触发条件时,从代码仓库管理系统中获取待检测代码。在本发明的一个实施例中,预设触发条件包括系统达到预设的触发时间,例如用户设定每间隔二小时触发一次,其中间隔的时间根据用户需求而定。在本发明的另一个实施例中,预设触发条件包括系统状态满足预设的触发事件状态,例如当代码在开发分支开发完成后触发。
代码质量管理平台还用于对待检测代码进行代码质量检测生成代码质量检测结果。在本发明的一个实施例中,代码质量管理平台具体用于根据待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或不合格。用户设定一个代码文件的圈复杂度阈值,当待检测代码文件的圈复杂度超过用户设定的圈复杂度阈值时,认定待检测代码检测结果不合格;当待检测代码文件的圈复杂度没有超过用户设定的圈复杂度阈值时,认定待检测代码检测结果合格。
在本发明的另一个实施例中,代码质量管理平台根据待检测代码中的Bug情况判断代码质量检测结果合格或不合格。
进一步地,代码质量管理平台还用于根据待检测代码中的Bug情况生成代码质量得分。
在一些示例中,通过设定Bug等级的判断条件,当待检测代码中的Bug等级超过某个Bug等级时,认定待检测代码检测结果不合格;当待检测代码中的Bug等级不超过某个Bug等级时,认定待检测代码检测结果合格。代码质量管理平台根据待检测代码中的Bug等级生成相应的得分,例如无Bug,为满分100分,轻微Bug对系统影响小时得分为80分。进一步地,质量管理平台还用于在本地保存代码质量得分。
在本发明的一个实施例中,代码质量管理平台通过对待检测代码(例如Java代码)进行编译,并在编译的过程中进行代码规范检测(例如Java代码规范检查和PMD代码检测),并通过源码分析器对待检测代码进行检测,以生成代码质量检测结果。
在本发明的一个实施例中,代码质量管理平台通过调用预设的外部代码检测工具(例如SpotBugs)对待检测代码进行代码质量检测以生成代码质量检测结果。
SonarQube平台用于提供代码质量检测结果。
项目质量管理平台用于进行项目管理,并可根据代码质量检测结果确定预设代码操作。
具体地,项目质量管理平台注册项目和对应的任务,项目主要由Project(项目)和Task(发布任务)组成,Project主要包括Name(项目名)、Address(代码仓库地址)和Branch(代码分支)等组成,指定了项目名和对应的代码。Task主要由Trigger(触发条件)、Rule(检查条件)、Event(事件)组成。
项目管理平台可以查询相应的代码质量,如果本地没有相关数据或者不是最新数据,则发给代码质量管理平台查询,代码质量管理平台收到后触发检查,尝试开始下载代码,执行代码检测,并在检查完成后上传结果到SonarQube平台。
代码质量管理平台从SonarQube平台上获取代码质量检测结果。如果代码质量符合要求,项目管理平台可以合并代码、编译代码、发布代码,项目管理平台根据本地或者代码质量管理平台返回的代码质量结果决定是否触发相应的事件。以上步骤中以前面的CodeFinish为例,如果代码管理平台返回代码检测结果符合要求,则项目管理平台开始merge代码。
图2是本发明一个实施例的代码质量的检测方法的流程图。如图2所示,本发明还公开了一种代码质量的检测方法,包括以下步骤:
S1:获取多段代码并存储。
具体地,一个或多个用户向代码仓库管理系统提供代码,这样代码仓库管理系统就可以存储多段代码。
S2:当满足预设触发条件时,从多段代码中获取待检测代码。
在本发明的一个实施例中,预设触发条件包括系统达到预设的触发时间。例如用户设定每间隔二小时触发一次,其中间隔的时间根据用户需求而定。
在本发明的另一个实施例中,预设触发条件包括系统状态满足预设的触发事件状态,例如当代码在开发分支开发完成后触发。
S3:对待检测代码的进行质量检测生成代码质量检测结果。其中,步骤S3包括:对待检测代码的进行质量检测生成代码质量检测结果的步骤包括:
根据待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或代码质量检测结果不合格,如用户设定一个代码文件的圈复杂度阈值,当待检测代码文件的圈复杂度超过用户设定的圈复杂度阈值时,认定待检测代码检测结果不合格;当待检测代码文件的圈复杂度没有超过用户设定的圈复杂度阈值时,认定待检测代码检测结果合格;
或根据待检测代码中的Bug情况判断代码质量检测结果合格或代码质量检测结果不合格。在一些示例中,通过设定Bug等级的判断条件,当待检测代码中的Bug等级超过某个Bug等级时,认定待检测代码检测结果不合格;当待检测代码中的Bug等级不超过某个Bug等级时,认定待检测代码检测结果合格。
在本发明的一个实施例中,步骤S3还包括:通过对待检测代码(例如Java代码)进行编译,并在编译的过程中进行代码规范检测(例如Java代码规范检查和PMD代码检测),并通过源码分析器对待检测代码进行检测,以生成代码质量检测结果。
在本发明的一个实施例中,步骤S3还包括:通过调用预设的外部代码检测工具(例如SpotBugs)对待检测代码进行代码质量检测以生成代码质量检测结果。
S4:根据代码质量检测结果确定预设代码操作。在本发明的一个实施例中,预设代码操作包括合并代码、编译代码和发布代码中的至少一项。
在本发明的一个实施例中,代码质量的检测方法还包括:根据待检测代码中的Bug情况生成代码质量得分,例如无Bug,为满分100分,轻微Bug对系统影响小时得分为80分。
另外,本发明实施例的代码质量的检测系统的其它构成以及作用对于本领域的技术人员而言都是已知的,为了减少冗余,不做赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。
Claims (10)
1.一种代码质量的检测系统,其特征在于,包括:
代码仓库管理系统,用于获取多段代码并存储;
代码质量管理平台,用于在满足预设触发条件时,从所述代码仓库管理系统中获取待检测代码,并对所述待检测代码进行代码质量检测生成代码质量检测结果,其中,所述代码质量管理平台根据所述待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或不合格,或所述代码质量管理平台根据所述待检测代码中的Bug情况判断代码质量检测结果合格或不合格;
SonarQube平台,用于提供所述代码质量检测结果;
项目质量管理平台,用于根据所述代码质量检测结果确定预设代码操作。
2.根据权利要求1所述的代码质量的检测系统,其特征在于,所述预设触发条件包括系统达到预设的触发时间或系统状态满足预设的触发事件状态。
3.根据权利要求1所述的代码质量的检测系统,其特征在于,所述代码质量管理平台还用于根据所述待检测代码中的Bug情况生成代码质量得分。
4.根据权利要求1所述的代码质量的检测系统,其特征在于,所述代码质量管理平台通过对所述待检测代码进行编译,并在所述编译的过程中进行代码规范检测,并通过源码分析器对所述待检测代码进行检测,以生成所述代码质量检测结果;
或者,所述代码质量管理平台通过调用预设的外部代码检测工具对所述待检测代码进行代码质量检测以生成所述代码质量检测结果。
5.根据权利要求1所述的代码质量的检测系统,其特征在于,所述预设代码操作包括合并代码、编译代码和发布代码中的至少一项。
6.一种代码质量的检测方法,其特征在于,包括以下步骤:
获取多段代码并存储;
当满足预设触发条件时,从所述多段代码中获取待检测代码;
对所述待检测代码的进行质量检测生成代码质量检测结果;
根据所述代码质量检测结果确定预设代码操作;
其中,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤包括:根据所述待检测代码的圈复杂度是否超过预设的圈复杂度阈值判断代码质量检测结果合格或不合格,或根据所述待检测代码中的Bug情况判断代码质量检测结果合格或不合格。
7.根据权利要求6所述的代码质量的检测方法,其特征在于,所述预设触发条件包括系统达到预设的触发时间或系统状态满足预设的触发事件状态。
8.根据权利要求6所述的代码质量的检测方法,其特征在于,还包括:
根据所述待检测代码中的Bug情况生成代码质量得分。
9.根据权利要求6所述的代码质量的检测方法,其特征在于,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤还包括:
通过对所述待检测代码进行编译,并在所述编译的过程中进行代码规范检测,并通过源码分析器对所述待检测代码进行检测,以生成所述代码质量检测结果;
其中,对所述待检测代码的进行质量检测生成代码质量检测结果的步骤还包括:通过调用预设的外部代码检测工具对所述待检测代码进行代码质量检测以生成所述代码质量检测结果。
10.根据权利要求6所述的代码质量的检测方法,其特征在于,所述预设代码操作包括合并代码、编译代码和发布代码中的至少一项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811563242.6A CN109726123A (zh) | 2018-12-20 | 2018-12-20 | 代码质量的检测系统和检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811563242.6A CN109726123A (zh) | 2018-12-20 | 2018-12-20 | 代码质量的检测系统和检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109726123A true CN109726123A (zh) | 2019-05-07 |
Family
ID=66296934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811563242.6A Pending CN109726123A (zh) | 2018-12-20 | 2018-12-20 | 代码质量的检测系统和检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109726123A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297656A (zh) * | 2019-05-23 | 2019-10-01 | 重庆金融资产交易所有限责任公司 | 基于配置模型评审代码的方法、装置及计算机设备 |
CN111444093A (zh) * | 2020-03-25 | 2020-07-24 | 世纪龙信息网络有限责任公司 | 项目开发过程质量的确定方法、装置、计算机设备 |
CN111837109A (zh) * | 2019-11-22 | 2020-10-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
CN112269594A (zh) * | 2020-10-30 | 2021-01-26 | 北京首都在线科技股份有限公司 | 项目代码质量评估方法、装置、设备及存储介质 |
CN113282299A (zh) * | 2021-06-15 | 2021-08-20 | 中国农业银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636252A (zh) * | 2015-01-04 | 2015-05-20 | 浪潮软件股份有限公司 | 基于SonarQube的在线代码审核方法和系统 |
CN105893265A (zh) * | 2016-06-30 | 2016-08-24 | 苏州科大讯飞教育科技有限公司 | 软件项目自动检测系统及方法 |
CN107688527A (zh) * | 2016-08-05 | 2018-02-13 | 华为技术有限公司 | 缺陷显示方法及装置 |
-
2018
- 2018-12-20 CN CN201811563242.6A patent/CN109726123A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636252A (zh) * | 2015-01-04 | 2015-05-20 | 浪潮软件股份有限公司 | 基于SonarQube的在线代码审核方法和系统 |
CN105893265A (zh) * | 2016-06-30 | 2016-08-24 | 苏州科大讯飞教育科技有限公司 | 软件项目自动检测系统及方法 |
CN107688527A (zh) * | 2016-08-05 | 2018-02-13 | 华为技术有限公司 | 缺陷显示方法及装置 |
Non-Patent Citations (2)
Title |
---|
刘震: "《软件测试实用教程》", 31 March 2017, 人民邮电出版社 * |
浙江省企业联合会: "《浙江省企业管理创新优秀成果汇编 上》", 31 October 2018, 浙江工商大学出版社 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297656A (zh) * | 2019-05-23 | 2019-10-01 | 重庆金融资产交易所有限责任公司 | 基于配置模型评审代码的方法、装置及计算机设备 |
CN110297656B (zh) * | 2019-05-23 | 2024-01-26 | 天航长鹰(江苏)科技有限公司 | 基于配置模型评审代码的方法、装置及计算机设备 |
CN111837109A (zh) * | 2019-11-22 | 2020-10-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
WO2021097824A1 (zh) * | 2019-11-22 | 2021-05-27 | 深圳海付移通科技有限公司 | 一种代码质量和缺陷的分析方法、服务器及存储介质 |
CN111444093A (zh) * | 2020-03-25 | 2020-07-24 | 世纪龙信息网络有限责任公司 | 项目开发过程质量的确定方法、装置、计算机设备 |
CN111444093B (zh) * | 2020-03-25 | 2024-04-02 | 天翼数字生活科技有限公司 | 项目开发过程质量的确定方法、装置、计算机设备 |
CN112269594A (zh) * | 2020-10-30 | 2021-01-26 | 北京首都在线科技股份有限公司 | 项目代码质量评估方法、装置、设备及存储介质 |
CN113282299A (zh) * | 2021-06-15 | 2021-08-20 | 中国农业银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
CN113282299B (zh) * | 2021-06-15 | 2024-06-07 | 中国农业银行股份有限公司 | 信息处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726123A (zh) | 代码质量的检测系统和检测方法 | |
US7757125B2 (en) | Defect resolution methodology and data defects quality/risk metric model extension | |
US20090241096A1 (en) | Dynamic Software Tracing | |
US20080120601A1 (en) | Information processing apparatus, method and program for deciding priority of test case to be carried out in regression test background of the invention | |
CN109726107A (zh) | 测试方法、装置、设备及存储介质 | |
WO2016188170A1 (zh) | 测试方法和装置、设备、计算机存储介质 | |
CN108804326B (zh) | 一种软件代码自动检测方法 | |
CN105094783A (zh) | 安卓应用稳定性测试的方法及装置 | |
JP2011521368A (ja) | 1個のソフトウェアの少なくとも一部を検証するためにテストケースを自動的に形成する方法 | |
CN107045477B (zh) | 一种可进行多维度检测的质量评估平台 | |
Andrade et al. | Generating test cases for real-time systems based on symbolic models | |
Mohanty et al. | A survey on model based test case prioritization | |
CN106919431B (zh) | 持续集成中的代码比对方法、设备以及系统 | |
KR100919222B1 (ko) | 테스트 케이스의 성능 평가 방법 및 장치 | |
JP2005222108A (ja) | バグ分析方法および装置 | |
US20110138360A1 (en) | LEVERAGING THE RELATIONSHIP BETWEEN OBJECT IDs AND FUNCTIONS IN DIAGNOSING SOFTWARE DEFECTS DURING THE POST-DEPLOYMENT PHASE | |
CN110489347A (zh) | 基于git的版本管理方法、装置、设备及可读存储介质 | |
CN111459804B (zh) | 系统测试中的节点优化方法、装置及存储介质 | |
KR102693721B1 (ko) | 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 | |
US6675323B2 (en) | Incremental fault dictionary | |
US8855801B2 (en) | Automated integration of feedback from field failure to order configurator for dynamic optimization of manufacturing test processes | |
JP2002093865A (ja) | ウエハの故障サイン自動検出、分類方法 | |
US11360882B2 (en) | Method and apparatus for calculating a software stability index | |
Dos Santos et al. | Featured scents: towards assessing architectural smells for self-adaptive systems at runtime | |
TWI735511B (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: 20190507 |
|
RJ01 | Rejection of invention patent application after publication |