CN109359035B - 一种代码质量实时跟踪方法 - Google Patents

一种代码质量实时跟踪方法 Download PDF

Info

Publication number
CN109359035B
CN109359035B CN201811095792.XA CN201811095792A CN109359035B CN 109359035 B CN109359035 B CN 109359035B CN 201811095792 A CN201811095792 A CN 201811095792A CN 109359035 B CN109359035 B CN 109359035B
Authority
CN
China
Prior art keywords
code
node
code quality
quality
child node
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.)
Active
Application number
CN201811095792.XA
Other languages
English (en)
Other versions
CN109359035A (zh
Inventor
冷洪亮
范渊
龙文洁
莫金友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN201811095792.XA priority Critical patent/CN109359035B/zh
Publication of CN109359035A publication Critical patent/CN109359035A/zh
Application granted granted Critical
Publication of CN109359035B publication Critical patent/CN109359035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种代码质量实时跟踪方法,通过实时采集代码库服务端新增的节点片段,将节点片段封装为父节点和子节点的键值对,发送至代码质量计算平台,代码质量计算平台对接收到的封装信息进行解析后获得父节点和子节点的键值对,获得对应的代码并分别计算父节点和子节点的代码质量的差值,最终判定代码质量。本发明克服了工程师代码质量和团队工程效能领域中的不足,通过自动获取代码更新片段信息,计算代码相关质量和父子节点相关质量差值进行判断代码质量,从而提供一种定位精准、定位速度快、稳定可靠的代码质量实时跟踪服务。

Description

一种代码质量实时跟踪方法
技术领域
本发明涉及电数字数据处理的技术领域,特别涉及一种定位精准、定位速度快、稳定可靠的代码质量实时跟踪方法。
背景技术
在大多数企业中,为规范和统一管理代码,开发团队中的代码资产会被实时提交至版本管理服务器上。版本管理服务器上的代码库中存储的代码来自开发团队的各个成员,这些代码可能会被成员直接提交,也有可能是通过审核后提交。这两种方式均存在弊端,前者代码未经过审核无法保障代码质量,后者代码虽经过审核但人工审核工作量大,效率低下且易出错。
在实际的工作中,代码质量一般涉及5个方面,包括编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析,这5方面从很大程序上决定了一份代码的质量高低。
编码标准是公司的编码规范,包括类命名、包命名、代码风格等,均属于编码标准的一部分;
代码重复是指重复的代码;
代码覆盖率是测试代码能运行到的代码比率,关系到代码的功能性和稳定性;
依赖项分析是指代码的依赖关系、耦合关系,分析是指分析查看是否有循环依赖、是否符合高内聚低耦合的原则等;
复杂度分析:圈复杂度越高,代码越难以阅读,通过复杂度分析可以找到这些代码,越优秀的代码应当是越容易读懂的。
发明内容
本发明解决的技术问题是,现有技术中,代码直接提交代码库或是经过人工审核提交代码库,存在代码质量和效率无法兼顾问题,本发明提供了一种优化的代码质量实时跟踪方法。
本发明所采用的技术方案是,一种代码质量实时跟踪方法,所述方法包括以下步骤:
步骤1:采集代码库服务端新增的节点的代码片段,将所述代码片段封装为父节点和子节点的键值对,发送至代码质量计算平台;
步骤2:代码质量计算平台对接收到的封装信息进行解析,获得父节点和子节点的键值对,获得代码并分别计算父节点和子节点的代码质量的差值;
步骤3:基于父节点和子节点的代码质量的差值判定代码质量。
优选地,所述步骤1包括以下步骤:
步骤1.1:在代码库服务端的版本管理工具下配置触发单元;
步骤1.2:代码库服务端增加节点片段,触发单元被触发,抓取代码节点更新片段的信息;
步骤1.3:在触发单元内封装步骤1.2中抓取的信息,得到封装信息将封装信息发送至代码质量计算平台。
优选地,所述触发单元包括HOOK函数。
优选地,所述步骤1.2中,片段的信息包括子节点ID、父节点ID、仓库名称、分支名称、提交人、提交时间。
优选地,所述步骤2包括以下步骤:
步骤2.1:代码质量计算平台对接收到的封装信息进行解析;
步骤2.2:分别根据封装信息中的父节点信息和子节点信息切换至代码库的父节点和子节点,获取对应的父节点和子节点;
步骤2.3:计算父节点和子节点的代码质量;
步骤2.4:计算父节点和子节点的代码质量的差值。
优选地,所述代码质量包括代码覆盖率、编码标准值、代码重复率、依赖项分析值、复杂度。
优选地,所述代码覆盖率通过jacoco工具计算。
优选地,所述编码标准值、代码重复率、依赖项分析值、复杂度通过sonar工具计算。
优选地,所述步骤3中,当同时满足子节点的代码覆盖率大于父节点的代码覆盖率、子节点的编码标准值小于父节点的编码标准值、子节点的代码重复率小于父节点的代码重复值、子节点的依赖项分析值小于父节点的依赖项分析值和子节点的复杂度小于父节点的复杂度,则代码质量达标。
本发明提供了一种优化的代码质量实时跟踪方法,通过实时采集代码库服务端新增的节点的代码片段,将代码片段封装为父节点和子节点的键值对,发送至代码质量计算平台,代码质量计算平台对接收到的封装信息进行解析后获得父节点和子节点的键值对,获得对应的代码并分别计算父节点和子节点的代码质量的差值,最终判定代码质量。本发明克服了工程师代码质量和团队工程效能领域中的不足,通过自动获取代码更新片段信息,计算代码相关质量和父子节点相关质量差值进行判断代码质量,从而提供一种定位精准、定位速度快、稳定可靠的代码质量实时跟踪服务。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合实施例对本发明做进一步的详细描述,但本发明的保护范围并不限于此。
本发明涉及一种代码质量实时跟踪方法,所述方法包括以下步骤。
步骤1:采集代码库服务端新增的节点的代码片段,将所述代码片段封装为父节点和子节点的键值对,发送至代码质量计算平台。
所述步骤1包括以下步骤:
步骤1.1:在代码库服务端的版本管理工具下配置触发单元;
所述触发单元包括HOOK函数。
本发明中,步骤1.1实际上即是在代码库服务端的版本管理工具的HOOKS目录下配置钩子函数(HOOK函数),如pre-receive或post-receive,任何代码节点的更新均会触发pre-receive、post-receive的调用。
步骤1.2:代码库服务端增加节点片段,触发单元被触发,抓取代码节点更新片段的信息;
所述步骤1.2中,片段的信息包括子节点ID、父节点ID、仓库名称、分支名称、提交人、提交时间。
本发明中,片段的信息包括但不限于子节点ID、父节点ID、仓库名称、分支名称、提交人、提交时间。
本发明中,基于片段的信息,父节点和子节点的键值对包括:
子节点:(子节点ID,value)、(仓库名称,value)、(分支名称,value))、(提交人,value)、(提交时间,value);
父节点:(父节点ID,value)、(仓库名称,value)、(分支名称,value)、(提交人,value)、(提交时间,value)。
步骤1.3:在触发单元内封装步骤1.2中抓取的信息,得到封装信息将封装信息发送至代码质量计算平台。
步骤2:代码质量计算平台对接收到的封装信息进行解析,获得父节点和子节点的键值对,获得代码并分别计算父节点和子节点的代码质量的差值。
所述步骤2包括以下步骤:
步骤2.1:代码质量计算平台对接收到的封装信息进行解析;
步骤2.2:分别根据封装信息中的父节点信息和子节点信息切换至代码库的父节点和子节点,获取对应的父节点和子节点;
步骤2.3:计算父节点和子节点的代码质量;
步骤2.4:计算父节点和子节点的代码质量的差值。
所述代码质量包括代码覆盖率、编码标准值、代码重复率、依赖项分析值、复杂度。
所述代码覆盖率通过jacoco工具计算。
所述编码标准值、代码重复率、依赖项分析值、复杂度通过sonar工具计算。
本发明中,事实上,代码质量包括但不限于代码覆盖率、编码标准值、代码重复率、依赖项分析值、复杂度。
本发明中,代码覆盖率通过jacoco工具的计算命令为:mvn clean jacoco:prepare-agent test jacoco:report,计算结果从jacoco.xml文件中提取。
本发明中,编码标准值、代码重复率、依赖项分析值、复杂度的计算命令为sonar-scanner,计算结果从sonar中提取。
步骤3:基于父节点和子节点的代码质量的差值判定代码质量。
所述步骤3中,当同时满足子节点的代码覆盖率大于父节点的代码覆盖率、子节点的编码标准值小于父节点的编码标准值、子节点的代码重复率小于父节点的代码重复值、子节点的依赖项分析值小于父节点的依赖项分析值和子节点的复杂度小于父节点的复杂度,则代码质量达标。
本发明通过实时采集代码库服务端新增的节点的代码片段,将代码片段封装为父节点和子节点的键值对,发送至代码质量计算平台,代码质量计算平台对接收到的封装信息进行解析后获得父节点和子节点的键值对,获得对应的代码并分别计算父节点和子节点的代码质量的差值,最终判定代码质量。本发明克服了工程师代码质量和团队工程效能领域中的不足,通过自动获取代码更新片段信息,计算代码相关质量和父子节点相关质量差值进行判断代码质量,从而提供一种定位精准、定位速度快、稳定可靠的代码质量实时跟踪服务。

Claims (8)

1.一种代码质量实时跟踪方法,其特征在于:所述方法包括以下步骤:
步骤1:采集代码库服务端新增的节点的代码片段,将所述代码片段封装为父节点和子节点的键值对,发送至代码质量计算平台;
步骤2:代码质量计算平台对接收到的封装信息进行解析,获得父节点和子节点的键值对,获得代码并分别计算父节点和子节点的代码质量的差值;
步骤3:基于父节点和子节点的代码质量的差值判定代码质量;
当同时满足子节点的代码覆盖率大于父节点的代码覆盖率、子节点的编码标准值小于父节点的编码标准值、子节点的代码重复率小于父节点的代码重复值、子节点的依赖项分析值小于父节点的依赖项分析值和子节点的复杂度小于父节点的复杂度,则代码质量达标。
2.根据权利要求1所述的一种代码质量实时跟踪方法,其特征在于:所述步骤1包括以下步骤:
步骤1.1:在代码库服务端的版本管理工具下配置触发单元;
步骤1.2:代码库服务端增加节点片段,触发单元被触发,抓取代码节点更新片段的信息;
步骤1.3:在触发单元内封装步骤1.2中抓取的信息,得到封装信息将封装信息发送至代码质量计算平台。
3.根据权利要求2所述的一种代码质量实时跟踪方法,其特征在于:所述触发单元包括HOOK函数。
4.根据权利要求2所述的一种代码质量实时跟踪方法,其特征在于:所述步骤1.2中,片段的信息包括子节点ID、父节点ID、仓库名称、分支名称、提交人、提交时间。
5.根据权利要求1所述的一种代码质量实时跟踪方法,其特征在于:所述步骤2包括以下步骤:
步骤2.1:代码质量计算平台对接收到的封装信息进行解析;
步骤2.2:分别根据封装信息中的父节点信息和子节点信息切换至代码库的父节点和子节点,获取对应的父节点和子节点;
步骤2.3:计算父节点和子节点的代码质量;
步骤2.4:计算父节点和子节点的代码质量的差值。
6.根据权利要求5所述的一种代码质量实时跟踪方法,其特征在于:所述代码质量包括代码覆盖率、编码标准值、代码重复率、依赖项分析值、复杂度。
7.根据权利要求6所述的一种代码质量实时跟踪方法,其特征在于:所述代码覆盖率通过jacoco工具计算。
8.根据权利要求6所述的一种代码质量实时跟踪方法,其特征在于:所述编码标准值、代码重复率、依赖项分析值、复杂度通过sonar工具计算。
CN201811095792.XA 2018-09-19 2018-09-19 一种代码质量实时跟踪方法 Active CN109359035B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811095792.XA CN109359035B (zh) 2018-09-19 2018-09-19 一种代码质量实时跟踪方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811095792.XA CN109359035B (zh) 2018-09-19 2018-09-19 一种代码质量实时跟踪方法

Publications (2)

Publication Number Publication Date
CN109359035A CN109359035A (zh) 2019-02-19
CN109359035B true CN109359035B (zh) 2022-04-29

Family

ID=65351389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811095792.XA Active CN109359035B (zh) 2018-09-19 2018-09-19 一种代码质量实时跟踪方法

Country Status (1)

Country Link
CN (1) CN109359035B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339252A (zh) * 2011-07-25 2012-02-01 大连理工大学 基于xml中间模型以及缺陷模式匹配的静态检测系统
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106326110A (zh) * 2016-08-10 2017-01-11 浪潮(北京)电子信息产业有限公司 一种系统版本开发过程中bug缺陷的修复方法及系统
CN107025112A (zh) * 2017-04-10 2017-08-08 丹露成都网络技术有限公司 一种基于git hooks和缺陷管理工具的监管及跟踪方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289532B2 (en) * 2015-04-08 2019-05-14 Opshub, Inc. Method and system for providing delta code coverage information

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339252A (zh) * 2011-07-25 2012-02-01 大连理工大学 基于xml中间模型以及缺陷模式匹配的静态检测系统
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106326110A (zh) * 2016-08-10 2017-01-11 浪潮(北京)电子信息产业有限公司 一种系统版本开发过程中bug缺陷的修复方法及系统
CN107025112A (zh) * 2017-04-10 2017-08-08 丹露成都网络技术有限公司 一种基于git hooks和缺陷管理工具的监管及跟踪方法

Also Published As

Publication number Publication date
CN109359035A (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
CN112612675B (zh) 微服务架构下的分布式大数据日志链路跟踪方法及系统
CN103530199B (zh) 一种修复软件运行错误的方法、装置及系统
WO2016090929A1 (zh) 软件系统故障诊断方法、服务器及系统
KR20180078296A (ko) 서비스 호출 정보 처리 방법 및 디바이스
CN112506799B (zh) 业务异常定位方法及装置、电子设备、介质、产品
CN106095678B (zh) 用于Windows平台下数据库业务操作的自动化结果检查方法
CN109698763B (zh) 一种巡检的方法、装置及计算机可读存储介质
US10410152B2 (en) System and method for automatically and efficiently monitoring software development life cycles
CN111294730B (zh) 一种网络问题投诉信息处理的方法及装置
CN111061489B (zh) 一种多平台编译检测方法、装置、设备及介质
CN113448854A (zh) 一种回归测试方法和装置
CN110955715A (zh) Erp系统和目标平台的数据转换方法、装置以及电子设备
CN111667163A (zh) 基于rpa技术的故障监控方法、rpa机器人及存储介质
CN111913824B (zh) 确定数据链路故障原因的方法及相关设备
CN116107589A (zh) 软件代码的自动编译方法、装置、设备及存储介质
CN109359035B (zh) 一种代码质量实时跟踪方法
CN113360353B (zh) 一种测试服务器和云平台
CN105825641A (zh) 一种业务报警方法和装置
CN102214141B (zh) 基于实时堆栈的程序切片方法
CN113807665A (zh) 一种基于边缘网关计算的互联标识生产数据处理方法
CN112087320A (zh) 一种异常定位方法、装置、电子设备和可读存储介质
CN116723090A (zh) 告警根因的定位方法、装置、电子设备及可读存储介质
CN115017218B (zh) 分布式调用链的处理方法及装置、存储介质、电子设备
CN105099815A (zh) 云盘监控方法及装置
CN115357023A (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
GR01 Patent grant
GR01 Patent grant