CN111562937A - 一种代码方法级缺陷预警方法 - Google Patents

一种代码方法级缺陷预警方法 Download PDF

Info

Publication number
CN111562937A
CN111562937A CN202010305228.7A CN202010305228A CN111562937A CN 111562937 A CN111562937 A CN 111562937A CN 202010305228 A CN202010305228 A CN 202010305228A CN 111562937 A CN111562937 A CN 111562937A
Authority
CN
China
Prior art keywords
code
defect
submission
bug
information
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
Application number
CN202010305228.7A
Other languages
English (en)
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.)
Beijing Simple Technology Co ltd
Original Assignee
Beijing Simple Technology 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 Beijing Simple Technology Co ltd filed Critical Beijing Simple Technology Co ltd
Priority to CN202010305228.7A priority Critical patent/CN111562937A/zh
Publication of CN111562937A publication Critical patent/CN111562937A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种代码方法级缺陷预警方法,包括用户代码提交客户端、缺陷管理***和代码托管平台,在用户代码提交客户端与代码托管平台之间设置提交信息提取模块和缺陷分析模块;具有以下步骤:(1)用户进行软件代码开发时,从缺陷管理***中查询出本次代码开发相关的缺陷修复任务,记为bug A;(2)用户代码编写完成,通过代码提交客户端向代码托管平台进行代码提交,并将此次代码提交关联的bug A的信息填入提交日志信息中;(3)通过在代码提交客户端和代码托管平台之间增加的提交信息提取模块对代码提交进行拦截,并对代码提交数据报文进行解析;本发明能够基于对研发历史数据进行分析,进行方法级的精确业务逻辑缺陷预警。

Description

一种代码方法级缺陷预警方法
技术领域
本发明涉及代码缺陷预警,具体是一种代码方法级缺陷预警方法。
背景技术
随着现代软件规模越来越大,逻辑也越来越复杂,代码间的相互关系千丝万缕,靠人脑完全理清业务逻辑,变得异常困难。对同一个代码方法的修改,稍有不慎,就可能会导致历史缺陷重复出现。如果通过对研发历史数据进行分析,建立起代码方法和历史缺陷数据的关联关系及关联权重,后续在修改同一个代码方法时,对关联权重最高的若干个历史缺陷进行预警,就能有效的协助工程师规避缺陷。
目前对于代码缺陷的预警,都是通过源代码扫描工具实现。这种源代码扫描工具,一般都是基于对代码源文件或者编译后的产出进行语法分析,国际上也有不少成熟的商用产品。但是通常只能检测出语法或者代码规范这种类型的代码本身问题,无法发现和业务相关的缺陷。其次是这种检测方法需要分析代码的语法树,算法复杂。
发明内容
本发明的目的在于提供一种代码方法级缺陷预警方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种代码方法级缺陷预警方法,包括用户代码提交客户端、缺陷管理***和代码托管平台,在用户代码提交客户端与代码托管平台之间设置提交信息提取模块和缺陷分析模块;具有以下步骤:
(1)用户进行软件代码开发时,从缺陷管理***中查询出本次代码开发相关的缺陷修复任务,记为bug A;
(2)用户代码编写完成,通过代码提交客户端向代码托管平台进行代码提交,并将此次代码提交关联的bug A的信息填入提交日志信息中;
(3)通过在代码提交客户端和代码托管平台之间增加的提交信息提取模块对代码提交进行拦截,并对代码提交数据报文进行解析,解析出提交日志信息中的bug A信息;
(4)提交信息提取模块将用户代码合入代码托管平台,并获取此次代码提交的变更,其中,代码变更分为新增、删除和修改三类;
(5)提交信息提取模块将此次代码变更中设计的新增、修改部分的代码路径及方法名进行联合签名,对每个变更的方法形成唯一可识别的标识;
假设此次代码提交新增及修改部分的代码涉及N个方法,每个方法及其完整文件路径经过签名后记为method 1、method 2....method N。
(6)提交信息提取模块将N个方法中的每一个与bug A的关联权重值记为1/N,并且将每个方法、bug A、关联权重值记录为<方法签名、bug A、关联权重>的三元数据,例如<method 2、bug A、1/N>;
(7)提交信息提取模块将步骤(6)中生成的三元数据发送至缺陷分析模块;
(8)缺陷分析模块根据该方法签名method 2,查询数据库中的历史数据中是否存在和 method 2关联的缺陷;
如果存在,则取出权重最高的若干个缺陷,并返回提交信息提取模块,并回传告知用户,作为缺陷预警信息;如果不存在,则无缺陷预警;
(9)缺陷分析模块根据该方法签名method 2,查询数据库中是否存在method 2与bug A 的关联信息;如果不存在,则将步骤(7)中的三元数据存储到缺陷分析模块的数据库中;如果存在,且关联权重为r,则将数据库中method 2与bug A的关联权重更新为(1/N)+r;
(10)在缺陷分析模块建立起代码方法与缺陷的关联关系及权重数据后,缺陷分析模块提供数据接口,向除了步骤(8)之外的其他需要进行缺陷预警的场合提供缺陷预警数据;接口输入参数为方法签名,输出则为与指定方法关联权重最高的若干个缺陷信息。
与现有技术相比,本发明的有益效果是:
本发明能够基于对研发历史数据进行分析,进行方法级的精确业务逻辑缺陷预警。在用户代码提交客户端及代码托管平台之间增加提交信息提取模块,基于代码提交日志信息的分析,建立代码方法与缺陷的关联信息与关联权重,并存储到缺陷分析模块中。在产生代码变更的场景中,缺陷分析模块可提供与变更的代码方法关联权重最高的若干个历史缺陷作为预警信息。从而有效避免现现代软件规模大、逻辑复杂的场景下,对代码方法进行变更时,重复导致历史类似缺陷的发生。
附图说明
图1为一种代码方法级缺陷预警方法的整体***示意图。
图2为一种代码方法级缺陷预警方法中工作流程示意图。
具体实施方式
下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
请参阅图1-2,一种代码方法级缺陷预警方法,包括用户代码提交客户端、缺陷管理***和代码托管平台,在用户代码提交客户端与代码托管平台之间设置提交信息提取模块和缺陷分析模块。其中,提交信息提取模块的主要工作原理是对用户提交数据进行拦截和报文分析;缺陷分析模块的主要工作原理是对代码方法、缺陷、代码方法和缺陷的关联权重进行分析并提供查询接口。
用户通过代码提交客户端向代码托管平台进行代码提交时,通过提交信息提取模块将代码变更涉及的方法及缺陷信息提取出来,并通过缺陷分析模块中的历史数据对变更代码中的方法进行缺陷预警。同时,将本次代码提交提取出来的代码方法及缺陷信息更新至缺陷分析模块的数据库中。本方法具有以下步骤:
(1)用户进行软件代码开发时,从缺陷管理***中查询出本次代码开发相关的缺陷修复任务,记为bug A;如图2箭头1、2所示。
(2)用户代码编写完成,通过代码提交客户端向代码托管平台进行代码提交,并将此次代码提交关联的bug A的信息填入提交日志信息中,如图2箭头3所示。其中,步骤(1)及步骤(2)为软件开发流程的标准做法。
(3)通过在代码提交客户端和代码托管平台之间增加的提交信息提取模块对代码提交进行拦截,对代码提交数据报文进行解析,解析出提交日志信息中的bug A信息;
(4)提交信息提取模块将用户代码合入代码托管平台,如图2箭头4所示,并获取此次代码提交的变更,其中,代码变更分为新增、删除和修改三类;如图2箭头5所示。
(5)提交信息提取模块将此次代码变更中设计的新增及修改部分的代码路径及方法名进行联合签名,对每个变更的方法形成唯一可识别的标识;假设此次代码提交新增及修改部分的代码涉及N个方法,每个方法及其完整文件路径经过签名后记为method 1、method 2....method N。
(6)提交信息提取模块将N个方法中的每一个与bug A的关联权重值记为1/N,并且将每个方法、bug A、关联权重值记录为<方法签名、bug A、关联权重>的三元数据,例如<method 2、bug A、1/N>;
(7)提交信息提取模块将步骤(6)中生成的三元数据发送至缺陷分析模块,如图2箭头6所示;
(8)缺陷分析模块根据该方法签名,查询数据库中的历史数据中是否存在和method 2 关联的缺陷;如果存在,则取出权重最高的若干个缺陷返回提交信息提取模块,并回传告知用户,作为缺陷预警信息,如图2箭头7、箭头8所示。如果不存在,则无缺陷预警。
(9)缺陷分析模块根据该方法签名,查询数据库中是否存在method 2与bug A的关联信息,如果不存在,则将步骤(7)中发送过来的三元数据存储到缺陷分析模块的数据库中;如果存在,且关联权重为r,则将数据库中method 2与bug A的关联权重更新为(1/N)+r;
(10)在缺陷分析模块建立起代码方法与缺陷的关联关系及权重数据后,缺陷分析模块提供数据接口,向除了步骤(8)之外的其他任何需要进行缺陷预警的场合提供缺陷预警数据,接口输入参数为方法签名,输出则为与指定方法关联权重最高的若干个缺陷信息。
在本实施例中,需要说明的是,本申请所采用的用户代码提交客户端、缺陷管理***、代码托管平台为通用研发基础***,为现有技术,均为现有技术,各部件之间的连接,也均为现有技术,因此在此不再赘述其连接关系及原理。
上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下做出各种变化。

Claims (1)

1.一种代码方法级缺陷预警方法,其特征在于,包括用户代码提交客户端、缺陷管理***和代码托管平台,在用户代码提交客户端与代码托管平台之间设置提交信息提取模块和缺陷分析模块;具有以下步骤:
(1)用户进行软件代码开发时,从缺陷管理***中查询出本次代码开发相关的缺陷修复任务,记为bug A;
(2)用户代码编写完成,通过代码提交客户端向代码托管平台进行代码提交,并将此次代码提交关联的bug A的信息填入提交日志信息中;
(3)通过在代码提交客户端和代码托管平台之间增加的提交信息提取模块对代码提交进行拦截,并对代码提交数据报文进行解析,解析出提交日志信息中的bug A信息;
(4)提交信息提取模块将用户代码合入代码托管平台,并获取此次代码提交的变更,其中,代码变更分为新增、删除和修改三类;
(5)提交信息提取模块将此次代码变更中设计的新增、修改部分的代码路径及方法名进行联合签名,对每个变更的方法形成唯一可识别的标识;
假设此次代码提交新增及修改部分的代码涉及N个方法,每个方法及其完整文件路径经过签名后记为method 1、method 2....method N。
(6)提交信息提取模块将N个方法中的每一个与bug A的关联权重值记为1/N,并且将每个方法、bug A、关联权重值记录为<方法签名、bug A、关联权重>的三元数据,例如<method2、bug A、1/N>;
(7)提交信息提取模块将步骤(6)中生成的三元数据发送至缺陷分析模块;
(8)缺陷分析模块根据该方法签名method 2,查询数据库中的历史数据中是否存在和method 2关联的缺陷;
如果存在,则取出权重最高的若干个缺陷,并返回提交信息提取模块,并回传告知用户,作为缺陷预警信息;如果不存在,则无缺陷预警;
(9)缺陷分析模块根据该方法签名method 2,查询数据库中是否存在method 2与bug A的关联信息;如果不存在,则将步骤(7)中的三元数据存储到缺陷分析模块的数据库中;如果存在,且关联权重为r,则将数据库中method 2与bug A的关联权重更新为(1/N)+r;
(10)在缺陷分析模块建立起代码方法与缺陷的关联关系及权重数据后,缺陷分析模块提供数据接口,向除了步骤(8)之外的其他需要进行缺陷预警的场合提供缺陷预警数据;接口输入参数为方法签名,输出则为与指定方法关联权重最高的若干个缺陷信息。
CN202010305228.7A 2020-04-17 2020-04-17 一种代码方法级缺陷预警方法 Pending CN111562937A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010305228.7A CN111562937A (zh) 2020-04-17 2020-04-17 一种代码方法级缺陷预警方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010305228.7A CN111562937A (zh) 2020-04-17 2020-04-17 一种代码方法级缺陷预警方法

Publications (1)

Publication Number Publication Date
CN111562937A true CN111562937A (zh) 2020-08-21

Family

ID=72071667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010305228.7A Pending CN111562937A (zh) 2020-04-17 2020-04-17 一种代码方法级缺陷预警方法

Country Status (1)

Country Link
CN (1) CN111562937A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051180A (zh) * 2021-04-30 2021-06-29 中国平安人寿保险股份有限公司 测试任务的监测方法、装置、设备及存储介质
CN113626036A (zh) * 2021-08-10 2021-11-09 北京沃东天骏信息技术有限公司 一种基于Jenkins的代码集成管理方法和***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159420A1 (en) * 2010-12-16 2012-06-21 Sap Ag Quality on Submit Process
US20130311972A1 (en) * 2012-05-16 2013-11-21 International Business Machines Corporation Automated tagging and tracking of defect codes based on customer problem management record
US20150100940A1 (en) * 2013-10-04 2015-04-09 Avaya Inc. System and method for prioritizing and remediating defect risk in source code
CN106156633A (zh) * 2016-06-23 2016-11-23 扬州大学 面向软件修改的风险分析方法
GB201918565D0 (en) * 2019-12-16 2020-01-29 British Telecomm Logistic model for code management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120159420A1 (en) * 2010-12-16 2012-06-21 Sap Ag Quality on Submit Process
US20130311972A1 (en) * 2012-05-16 2013-11-21 International Business Machines Corporation Automated tagging and tracking of defect codes based on customer problem management record
US20150100940A1 (en) * 2013-10-04 2015-04-09 Avaya Inc. System and method for prioritizing and remediating defect risk in source code
CN106156633A (zh) * 2016-06-23 2016-11-23 扬州大学 面向软件修改的风险分析方法
GB201918565D0 (en) * 2019-12-16 2020-01-29 British Telecomm Logistic model for code management

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113051180A (zh) * 2021-04-30 2021-06-29 中国平安人寿保险股份有限公司 测试任务的监测方法、装置、设备及存储介质
CN113051180B (zh) * 2021-04-30 2023-09-29 中国平安人寿保险股份有限公司 测试任务的监测方法、装置、设备及存储介质
CN113626036A (zh) * 2021-08-10 2021-11-09 北京沃东天骏信息技术有限公司 一种基于Jenkins的代码集成管理方法和***

Similar Documents

Publication Publication Date Title
CN109271272B (zh) 基于非结构化日志的大数据组件故障辅助修复***
CN107908550B (zh) 一种软件缺陷统计处理方法及装置
CN111563041B (zh) 一种测试用例按需精准执行方法
CN107016019B (zh) 数据库索引创建方法及装置
EP3683683A1 (en) Test cycle optimization using contextual association mapping
CN110941629B (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN111562937A (zh) 一种代码方法级缺陷预警方法
CN111104214B (zh) 一种工作流应用方法及装置
CN113297078B (zh) Mock***与基于mock***的数据测试方法
CN109815124B (zh) 基于mbse的联锁功能缺陷分析的方法及装置、联锁***
US7844601B2 (en) Quality of service feedback for technology-neutral data reporting
CN112068981B (zh) Linux操作***中基于知识库的故障扫描恢复方法及***
CN112579699A (zh) 业务数据处理链路的质量监控方法、***及存储介质
CN111913704A (zh) 一种基于VSCode快速开发GSP7脚本的方法及插件工具
CN107273293B (zh) 大数据***性能测试方法、装置及电子设备
CN106934045B (zh) 一种数据库迁移评估的***以及方法
CN114579809A (zh) 事件分析方法、装置、电子设备及存储介质
CN114492324A (zh) 组件数据统计方法及装置
CN114090514A (zh) 分布式***的日志检索方法及装置
CN109685453B (zh) 智能识别工作流有效路径的方法
CN117472641B (zh) 数据质量的检测方法、装置、电子设备及存储介质
CN111104390A (zh) 一种多csv文件的合并和校验的方法及***
CN113360306B (zh) 一种机载信息***的故障实时检测方法
CN113420045B (zh) 一种基于交互式分析的技战法模型构建方法及***
CN115576959B (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: 20200821

RJ01 Rejection of invention patent application after publication