CN111274146A - 一种代码度量方法、装置、电子设备和介质 - Google Patents

一种代码度量方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN111274146A
CN111274146A CN202010067528.6A CN202010067528A CN111274146A CN 111274146 A CN111274146 A CN 111274146A CN 202010067528 A CN202010067528 A CN 202010067528A CN 111274146 A CN111274146 A CN 111274146A
Authority
CN
China
Prior art keywords
code
measured
data
measurement
basic
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.)
Granted
Application number
CN202010067528.6A
Other languages
English (en)
Other versions
CN111274146B (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010067528.6A priority Critical patent/CN111274146B/zh
Publication of CN111274146A publication Critical patent/CN111274146A/zh
Application granted granted Critical
Publication of CN111274146B publication Critical patent/CN111274146B/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

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)
  • Automatic Analysis And Handling Materials Therefor (AREA)
  • Testing Or Calibration Of Command Recording Devices (AREA)

Abstract

本申请实施例公开了一种代码度量方法、装置、电子设备和介质,涉及软件工程技术领域。具体实现方案为:在监测到代码度量事件时,获取当前项目的待度量代码,以及所述待度量代码的度量指标;根据所述待度量代码的度量指标,对所述待度量代码进行度量,以产生待度量代码的基础度量数据;根据所述待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告。通过本申请实施例的技术方案,能够有效帮忙开发人员明确代码的优化方向,进而提高代码工程质量。

Description

一种代码度量方法、装置、电子设备和介质
技术领域
本申请涉及计算机技术,具体涉及软件工程技术,尤其涉及一种代码度量方法、装置、电子设备和介质。
背景技术
代码度量是一组软件度量值,使开发人员可以更好地了解他们在开发的代码。利用代码度量,开发人员可以了解哪些类型或方法应该返工,或者进行更彻底的测试;开发团队可以识别潜在的风险、了解项目的当前状态,并跟踪软件开发的进度。
然而目前,采用传统的代码度量技术对代码进行度量得到的度量结果比较单调,不能有效帮助开发人员提高代码工程质量。
发明内容
本申请实施例提供一种代码度量方法、装置、电子设备和介质,能够有效帮忙开发人员明确代码的优化方向,进而提高代码工程质量。
第一方面,本申请实施例公开了一种代码度量方法,该方法包括:
在监测到代码度量事件时,获取当前项目的待度量代码,以及所述待度量代码的度量指标;
根据所述待度量代码的度量指标,对所述待度量代码进行度量,以产生待度量代码的基础度量数据;
根据所述待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告。
上述可选方式具有如下优点或有益效果:通过根据待度量代码的度量指标对待度量代码进行度量,得到待度量代码的基础度量数据,之后采用待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对得到的待度量代码的基础度量数据进行多角度分析,使得所产生的待度量代码的度量报告能够有效帮助开发人员明确代码的优化方向,进而提高了代码工程质量。
可选的,根据所述待度量代码的标准度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
根据所述待度量代码中标准代码的版本标识,确定所述标准代码的基础度量数据,并将所述标准代码的基础度量数据作为所述待度量代码的标准度量数据;
根据所述待度量代码的标准度量数据,与所述待度量代码的基础度量数据之间的差值分析结果,得到所述度量报告中增量分析数据。
上述可选方式具有如下优点或有益效果:通过引入代码的版本标识,不仅便于快速定位到相关代码,而且有助于准确确定相关代码的基础度量数据;同时将待度量代码的标注度量数据与基础度量数据进行做差分析,并基于差值分析结果,即可得到增量分析数据,进而开发人员根据增量分析数据可明确代码的调优方向,为开发人员明确优化代码方向提供了一种可选方式。
可选的,根据所述待度量代码中标准代码的版本标识,确定所述标准代码的基础度量数据,包括:
若根据所述标准代码的版本标识识别到度量数据补充事件,则执行对标准代码进行度量的操作,以确定所述标准代码的基础度量数据。
上述可选方式具有如下优点或有益效果:提供了一种确定标准代码的基础度量数据的可选方式,增加了方案的灵活度。
可选的,根据其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
根据设定代码评分规则,确定所述待度量代码的基础度量数据的代码度量分值;
根据其他项目中的代码的基础度量数据的代码度量分值,以及所述待度量代码的基础度量数据的代码度量分值,确定所述度量报告中排名数据。
上述可选方式具有如下优点或有益效果:通过引入代码度量分值,确定待度量代码的排名数据,以便开发人员根据排名数据明确代码的调优方向,为开发人员明确优化代码方向提供了一种可选方式。
可选的,根据其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
确定其他项目中代码的基础度量数据的平均值;
将所述待度量代码的基础度量数据与所述平均值进行比较,得到所述度量报告中多边形比较图形。
上述可选方式具有如下优点或有益效果:通过引入其他项目中代码的基础度量数据的平均值,对待度量代码的基础度量数据分析,可得到多边形比较图形,便于开发人员直观了解代码优化方向,为开发人员明确优化代码方向提供了一种可选方式。
第二方面,本申请实施例公开了一种代码度量装置,该装置包括:
代码指标获取模块,用于在监测到代码度量事件时,获取当前项目的待度量代码,以及所述待度量代码的度量指标;
代码度量模块,用于根据所述待度量代码的度量指标,对所述待度量代码进行度量,以产生待度量代码的基础度量数据;
数据分析模块,用于根据所述待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告。
第三方面,本申请实施例还公开了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请任一实施例所述的代码度量方法。
第四方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请任一实施例所述的代码度量方法。
上述申请中的一个实施例具有如下优点或有益效果:通过根据待度量代码的度量指标对待度量代码进行度量,得到待度量代码的基础度量数据,之后采用待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对得到的待度量代码的基础度量数据进行多角度分析,使得所产生的待度量代码的度量报告能够有效帮助开发人员明确代码的优化方向,进而提高了代码工程质量。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1A是根据本申请第一实施例提供的一种代码度量方法的流程图;
图1B是根据本申请第一实施例提供的一种可视化通用度量指标界面示意图;
图2是根据本申请第二实施例提供的一种代码度量方法的流程图;
图3是根据本申请第三实施例提供的一种代码度量方法的流程图;
图4是根据本申请第四实施例提供的一种代码度量的系统架构图;
图5是根据本申请第五实施例提供的一种代码度量装置的结构示意图;
图6是用来实现本申请实施例的代码度量方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
第一实施例
图1A是根据本申请第一实施例提供的一种代码度量方法的流程图,本实施例可适用于如何对代码进行度量,以便帮助开发人员提高代码工程质量的情况。该方法可以由代码度量装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于承载代码度量功能的计算设备上。如图1A所示,本实施例提供的代码度量方法可以包括:
S110、在监测到代码度量事件时,获取当前项目的待度量代码,以及待度量代码的度量指标。
本实施例中,代码度量事件为用于对代码进行度量的事件,可以由下述至少一种触发机制触发产生:1)当前时间满足预设的代码度量周期,例如代码度量周期为一天度量一次;2)累积的增量代码达到设定阈值,本实施例中,增量代码优选为开发人员提交至缓存中的代码;3)开发人员向缓存中提交代码的次数达到设定数值;4)接收到开发人员手动点击代码度量开关,或者接收到开发人员以语音形式发送的代码度量指令等。
具体的,在监测到代码度量事件时,可以获取当前项目的待度量代码。其中,待度量代码可以包括增量代码和标准代码。标准代码为已经过合规检测即经过度量的代码,是开发人员编辑增量代码的基准。为了便于代码管理,进一步的,本实施例中,经过合规检测即经过度量的代码可与增量代码分开存储。例如,标准代码可存储于代码仓库中,增量代码存储于缓存中。此外,存储于代码仓库中的不同项目的代码具有不同的项目标识,例如项目标识可以是代码仓库的地址,或项目名称等。且不同时间存储于代码仓库中的同一项目的代码,可具有不同的版本标识,其中版本标识可以由随机数和代码入库(即代码存储于代码仓库)时间戳构成等。
进而在监测到代码度量事件时,可以从缓存中获取增量代码,同时依据版本标识和当前项目的项目标识从代码仓库中获取标准代码,以获取当前项目的待度量代码。其中,项目标识和版本标识可以由开发人员向缓存提交增量代码时预先指定。
进一步的,在监测到代码度量事件,获取当前项目的待度量代码的同时或之后,还可以获取待度量代码的度量指标。其中,度量指标即为用于度量代码的指标,可以包括但不限于注释行、代码行、注释率、超长函数、多参函数、总复杂度、文件平均复杂度、最大嵌套深度等。度量指标可以是开发人员预先根据实际需求灵活配置的,例如开发人员可在承载代码度量功能的计算设备所提供的可视化通用度量指标界面(如图1B所示)上灵活点选所需的指标。进一步的,开发人员还可以根据实际需求灵活定制所需的指标,例如每个类中静态方法个数等。
可选的,同一项目内不同版本标识的代码可具有相同的度量指标,不同项目的代码可具有相同或不同的代码度量指标;进一步的,采用相同语言编辑的不同项目的代码可具有相同的度量指标等。本实施例中,可预先存储项目标识与度量指标之间的关联关系,例如可预先存储于数据库中。进而可根据当前项目的项目标识,从数据库中获取待度量代码的度量指标。
S120、根据待度量代码的度量指标,对待度量代码进行度量,以产生待度量代码的基础度量数据。
具体的,在获取待度量代码以及待度量代码的度量指标之后,可以采用代码解析器对待度量代码进行词法、语法等分析,从中提取信息,并将该信息通过抽象语法树的形式表示,之后根据待度量代码的度量指标遍历抽象语法树,可得到待度量代码的基础度量数据。本实施例中,基础度量数据即为采用度量指标对代码进行度量所产生的结果。例如,度量指标包括注释率,若待度量代码中代码行为100,注释行为20,则注释率所对应的基础度量数据为20%。
由于实际度量时可能不关心某些代码,为了提高度量效率,进一步的,本实施例,还可以预先为每个项目设置白名单,其中,白名单即文件列表,此文件列表里面的代码不会被统计度量。进而在获取待度量代码的度量指标的同时,可获取对应的白名单,之后根据待度量代码的度量指标和对应的白名单,对待度量代码进行度量,以产生待度量代码的基础度量数据。
S130、根据待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告。
本实施例中,可以将待度量代码中标准代码的基础度量数据作为待度量代码的标准度量数据。其他项目优选为与当前项目具有相同编辑语言的项目,对应的,其他项目中代码的基础度量数据可以为其他项目中最新度量的代码的基础度量数据。度量报告用于供开发人员定位代码的优化方向,可选的,度量报告中可以包括一种或多种类型的数据分析结果。
可选的,可以将待度量代码的标准度量数据和待度量代码的基础度量数据进行比对,并可依据比对结果绘制雷达图;或者对于每项度量指标,可以选取其他项目中代码的该项度量指标所对应的基础度量数据中的最优基础度量数据,并将该最优基础度量数据与待度量代码的该项度量指标所对应的基础度量数据进行比对,并以列表的形式展示比对结果。
为了便于开发人员快速且准确定位代码的优化方向,可选的,可根据待度量代码的标准度量数据和其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,以得到多种类型的数据分析结果,供开发人员进行综合比较定位。
本申请实施例提供的技术方案,通过根据待度量代码的度量指标对待度量代码进行度量,得到待度量代码的基础度量数据,之后采用待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对得到的待度量代码的基础度量数据进行多角度分析,使得所产生的待度量代码的度量报告能够有效帮助开发人员明确代码的优化方向,进而提高了代码工程质量。
第二实施例
图2是根据本申请第二实施例提供的一种代码度量方法的流程图,本实施例在上述实施例的基础上,进一步对根据待度量代码的标准度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告进行解释说明。如图2所示,本实施例提供的代码度量方法可以包括:
S210、在监测到代码度量事件时,获取当前项目的待度量代码,以及待度量代码的度量指标。
S220、根据待度量代码的度量指标,对待度量代码进行度量,以产生待度量代码的基础度量数据。
S230、根据待度量代码中标准代码的版本标识,确定标准代码的基础度量数据,并将标准代码的基础度量数据作为待度量代码的标准度量数据。
本实施例中,可以将已度量的代码的基础度量数据存储于数据库中,进一步的,将项目标识、版本标识、以及基础度量数据关联存储于数据库中。例如可以以键值对的形式存储,将项目标识和版本标识存储于键域,将对应的基础度量数据存储于值域等。
进而,可以根据待度量代码中标准代码的版本标识,以及当前项目的项目标识在数据库中查找标准代码的基础度量数据,若存在,则获取标准代码的基础度量数据,并将标准代码的基础度量数据作为待度量代码的标准度量数据;若不存在,则触发执行标准代码的基础度量数据的操作,以确定待度量代码的标准度量数据。可选的,根据待度量代码中标准代码的版本标识,确定标准代码的基础度量数据可以是:若根据标准代码的版本标识识别到度量数据补充事件,则执行对标准代码进行度量的操作,以确定标准代码的基础度量数据。其中,度量数据补充事件可以是根据标准代码的标识在数据库中未查找到标准代码的基础度量数据所触发产生的事件。
具体的,若根据标准代码的版本标识识别到度量数据补充事件,则可以根据版本标识和当前项目的项目标识从代码仓库中获取标准代码,同时根据当前项目的项目标识从数据库中获取对应的度量指标;之后可根据度量指标,对标准代码进行度量,以产生标准代码的基础度量数据,将标准代码的基础度量数据作为待度量代码的标准度量数据,并将标准代码的基础度量数据存储于数据库中。
S240、根据待度量代码的标准度量数据,与待度量代码的基础度量数据之间的差值分析结果,得到度量报告中增量分析数据。
具体的,可以将待度量代码的每项度量指标所对应的标准度量数据,与待度量代码的该项度量指标所对应的基础度量数据进行做差分析,并根据差值分析结果,可得到度量报告中的增量分析数据。本实施例中,增量分析数据即为待度量代码中增量代码的分析数据。
可以理解的,由于增量代码是依托于代码仓库中已存储代码进行编辑的,若仅对增量代码进行扫描度量,所度量的结果将不准确。因此本实施例采用S210至S240的方式来获取增量代码的分析数据。可选的,可以将增量分析数据以列表的形式展示给开发人员,以便开发人员可直观了解到每项度量指标所对应的基础度量数据与标准度量数据的差异,进而确代码的调优方向。
本实施例中,开发人员还可根据实际需求,灵活设定将待度量代码的基础度量数据与当前项目中一个或多个其他版本代码的基础度量数据进行比较。例如,若开发人员还想将待度量代码的基础度量数据,与当前项目中其他版本代码的基础度量数据进行比较,则可以根据当前项目的版本标识和其他版本代码的版本标识,从数据库中查找该版本标识所对应的基础度量数据,若存在则直接进行比较;若不存在,则可先触发执行确定该版本标识所对应的基础度量数据的操作,而后再进行比较。
本申请实施例提供的技术方案,通过引入代码的版本标识,不仅便于快速定位到相关代码,而且有助于准确确定相关代码的基础度量数据;同时将待度量代码的标注度量数据与基础度量数据进行做差分析,并基于差值分析结果,即可得到增量分析数据,进而开发人员根据增量分析数据可明确代码的调优方向,为开发人员明确优化代码方向提供了一种可选方式。
第三实施例
图3是根据本申请第三实施例提供的一种代码度量方法的流程图,本实施例在上述实施例的基础上,进一步对根据其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告进行解释说明。如图3所示,本实施例提供的代码度量方法可以包括:
S310、在监测到代码度量事件时,获取当前项目的待度量代码,以及待度量代码的度量指标。
S320、根据待度量代码的度量指标,对待度量代码进行度量,以产生待度量代码的基础度量数据。
S330、根据设定代码评分规则,确定待度量代码的基础度量数据的代码度量分值。
本实施例中,代码评分规则是预先根据实际情况进行设定的。可选的,不同项的度量指标的代码评分规则不同。例如,对于多参函数这项度量指标,可设置参数个数小于或等于5的得分为10,参数个数大于5且小于7的得分8等。对于注释率这项度量指标,可设置注释率大于或等于25%的得分为5,注释率大于20%且小于25%的得分为4等。
可选的,可以根据设定代码评分规则,对待度量代码的各项度量指标所对应的基础度量数据进行评分,之后将各项度量指标所对应的基础度量数据的评分结果与其对应的度量指标的权重相乘,并将相乘结果累加作为待度量代码的基础度量数据的代码度量分值(后续用第一分值表示)。
S340、根据其他项目中的代码的基础度量数据的代码度量分值,以及待度量代码的基础度量数据的代码度量分值,确定度量报告中排名数据。
可选的,可根据其他项目的项目标识从数据库中获取最新度量的代码的基础度量数据的代码度量分值(后续用第二分值表示);之后对第一分值和第二分值进行排序,以确定待度量代码的排名数据。可选的,排名数据中可除了包括以代码度量分值为整体的排名情况之外,还可以包括每项度量指标所对应的基础度量数据的评分结果的排名情况,进而开发人员可根据排名数据明确代码的调优方向。
本申请实施例提供的技术方案,通过引入代码度量分值,确定待度量代码的排名数据,以便开发人员根据排名数据明确代码的调优方向,为开发人员明确优化代码方向提供了一种可选方式。
除了代码度量分值之外,可选的,根据其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告还可以是:确定其他项目中代码的基础度量数据的平均值;将待度量代码的基础度量数据与平均值进行比较,得到度量报告中多边形比较图形。
具体的,将其他项目中代码的各项度量指标所对应的基础度量数据做平均,可得到其他项目中代码的各项基础度量数据的平均值;之后将待度量代码的每项度量指标所对应的基础度量数据,与其他项目中代码的该项度量指标所对应的基础度量数据的平均值进行比较,可得到多边形比较图形。其中,多边形比较图像中每一角度可代表每项度量指标的比较结果,便于开发人员直观了解代码优化方向。
需要说明的是,通过引入其他项目中代码的基础度量数据的平均值,对待度量代码的基础度量数据分析,可得到多边形比较图形,便于开发人员直观了解代码优化方向,为开发人员明确优化代码方向提供了一种可选方式。
第四实施例
图4是根据本申请第四实施例提供的一种代码度量的系统架构图,本实施例在上述实施例的基础上,提供了一种优选实例。如图4所示,承载代码度量功能的计算设备可以包括度量事件识别模块、代码指标获取模块、代码度量模块、数据分析模块、代码仓库、数据库、以及缓存等。
具体的,开发人员可以通过设定的通信接口向缓存中提交代码;度量事件识别模块若识别开发人员提交至缓存中的代码量达到设定阈值,则触发产生代码度量事件;代码指标获取模块在监测到代码度量事件时,可以从缓存中获取当前项目的待度量代码中的增量代码,依据版本标识和当前项目的项目标识从代码仓库中获取待度量代码中的标准代码,同时还可以从数据库中获取待度量代码的度量指标。
之后,代码度量模块根据待度量代码的度量指标,对待度量代码进行度量,以产生待度量代码的基础度量数据,并可以将待度量代码的基础度量数据存储于数据库;数据分析模块根据待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告,并采用预设格式对度量报告进行封装后展示给开发人员,以便开发人员根据度量报告定位代码的优化方向。
第五实施例
图5是本申请第五实施例提供的一种代码度量装置的结构示意图,该装置可配置于承载代码度量功能的计算设备中,该装置可执行本申请任意实施例所提供的代码度量方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置可以包括:
代码指标获取模块510,用于在监测到代码度量事件时,获取当前项目的待度量代码,以及待度量代码的度量指标;
代码度量模块520,用于根据待度量代码的度量指标,对待度量代码进行度量,以产生待度量代码的基础度量数据;
数据分析模块530,用于根据待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对待度量代码的基础度量数据进行分析,得到待度量代码的度量报告。
本申请实施例提供的技术方案,通过根据待度量代码的度量指标对待度量代码进行度量,得到待度量代码的基础度量数据,之后采用待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对得到的待度量代码的基础度量数据进行多角度分析,使得所产生的待度量代码的度量报告能够有效帮助开发人员明确代码的优化方向,进而提高了代码工程质量。
示例性的,数据分析模块530可以包括:
标准数据确定单元,用于根据待度量代码中标准代码的版本标识,确定标准代码的基础度量数据,并将标准代码的基础度量数据作为待度量代码的标准度量数据;
增量数据确定单元,用于根据待度量代码的标准度量数据,与待度量代码的基础度量数据之间的差值分析结果,得到度量报告中增量分析数据。
示例性的,标准数据确定单元在用于根据待度量代码中标准代码的版本标识,确定标准代码的基础度量数据时,具体可以用于:
若根据标准代码的版本标识识别到度量数据补充事件,则执行对标准代码进行度量的操作,以确定标准代码的基础度量数据。
示例性的,数据分析模块530具体可以用于:
根据设定代码评分规则,确定待度量代码的基础度量数据的代码度量分值;
根据其他项目中的代码的基础度量数据的代码度量分值,以及待度量代码的基础度量数据的代码度量分值,确定度量报告中排名数据。
示例性的,数据分析模块530具体还可以用于:
确定其他项目中代码的基础度量数据的平均值;
将待度量代码的基础度量数据与平均值进行比较,得到度量报告中多边形比较图形。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图6所示,是根据本申请实施例的代码度量方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置,诸如,耦合至接口的显示设备,其上显示用户图形界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作,例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统。图6中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的代码度量方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的代码度量方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的代码度量方法对应的程序指令/模块,例如,附图5所示的代码指标获取模块510、代码度量模块520和数据分析模块530。处理器601通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的代码度量方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据用来实现代码度量方法的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至用来实现代码度量方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、区块链网络、局域网、移动通信网及其组合。
用来实现代码度量方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生与用来实现代码度量方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置和触觉反馈装置等,其中,辅助照明装置例如发光二极管(Light Emitting Diode,LED),触觉反馈装置例如振动电机等。该显示设备可以包括但不限于,液晶显示器(Liquid Crystal Display,LCD)、LED显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用专用集成电路(Application Specific Integrated Circuit,ASIC)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序也称作程序、软件、软件应用、或者代码,包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置,例如,磁盘、光盘、存储器、可编程逻辑装置(Programmable Logic Device,PLD),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置,例如,阴极射线管(Cathode Ray Tube,CRT)或者LCD监视器;以及键盘和指向装置,例如,鼠标或者轨迹球,用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈例如,视觉反馈、听觉反馈、或者触觉反馈;并且可以用任何形式,包括声输入、语音输入或者、触觉输入,来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统例如,作为数据服务器;或者实施在包括中间件部件的计算系统例如,应用服务器;或者实施在包括前端部件的计算系统例如具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互,或者实施在包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信,例如,通信网络,来将系统的部件相互连接。通信网络的示例包括:局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过根据待度量代码的度量指标对待度量代码进行度量,得到待度量代码的基础度量数据,之后采用待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对得到的待度量代码的基础度量数据进行多角度分析,使得所产生的待度量代码的度量报告能够有效帮助开发人员明确代码的优化方向,进而提高了代码工程质量。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (10)

1.一种代码度量方法,其特征在于,包括:
在监测到代码度量事件时,获取当前项目的待度量代码,以及所述待度量代码的度量指标;
根据所述待度量代码的度量指标,对所述待度量代码进行度量,以产生待度量代码的基础度量数据;
根据所述待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告。
2.根据权利要求1所述的方法,其特征在于,根据所述待度量代码的标准度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
根据所述待度量代码中标准代码的版本标识,确定所述标准代码的基础度量数据,并将所述标准代码的基础度量数据作为所述待度量代码的标准度量数据;
根据所述待度量代码的标准度量数据,与所述待度量代码的基础度量数据之间的差值分析结果,得到所述度量报告中增量分析数据。
3.根据权利要求2所述的方法,其特征在于,根据所述待度量代码中标准代码的版本标识,确定所述标准代码的基础度量数据,包括:
若根据所述标准代码的版本标识识别到度量数据补充事件,则执行对标准代码进行度量的操作,以确定所述标准代码的基础度量数据。
4.根据权利要求1所述的方法,其特征在于,根据其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
根据设定代码评分规则,确定所述待度量代码的基础度量数据的代码度量分值;
根据其他项目中的代码的基础度量数据的代码度量分值,以及所述待度量代码的基础度量数据的代码度量分值,确定所述度量报告中排名数据。
5.根据权利要求1所述的方法,其特征在于,根据其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告,包括:
确定其他项目中代码的基础度量数据的平均值;
将所述待度量代码的基础度量数据与所述平均值进行比较,得到所述度量报告中多边形比较图形。
6.一种代码度量装置,其特征在于,包括:
代码指标获取模块,用于在监测到代码度量事件时,获取当前项目的待度量代码,以及所述待度量代码的度量指标;
代码度量模块,用于根据所述待度量代码的度量指标,对所述待度量代码进行度量,以产生待度量代码的基础度量数据;
数据分析模块,用于根据所述待度量代码的标准度量数据和/或其他项目中代码的基础度量数据,对所述待度量代码的基础度量数据进行分析,得到所述待度量代码的度量报告。
7.根据权利要求6所述的装置,其特征在于,所述数据分析模块,包括:
标准数据确定单元,用于根据所述待度量代码中标准代码的版本标识,确定所述标准代码的基础度量数据,并将所述标准代码的基础度量数据作为所述待度量代码的标准度量数据;
增量数据确定单元,用于根据所述待度量代码的标准度量数据,与所述待度量代码的基础度量数据之间的差值分析结果,得到所述度量报告中增量分析数据。
8.根据权利要求7所述的装置,其特征在于,所述标准数据确定单元具体用于:
若根据所述标准代码的版本标识识别到度量数据补充事件,则执行对标准代码进行度量的操作,以确定所述标准代码的基础度量数据。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的代码度量方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的代码度量方法。
CN202010067528.6A 2020-01-20 2020-01-20 一种代码度量方法、装置、电子设备和介质 Active CN111274146B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010067528.6A CN111274146B (zh) 2020-01-20 2020-01-20 一种代码度量方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010067528.6A CN111274146B (zh) 2020-01-20 2020-01-20 一种代码度量方法、装置、电子设备和介质

Publications (2)

Publication Number Publication Date
CN111274146A true CN111274146A (zh) 2020-06-12
CN111274146B CN111274146B (zh) 2023-05-16

Family

ID=71001944

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010067528.6A Active CN111274146B (zh) 2020-01-20 2020-01-20 一种代码度量方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN111274146B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
CN101710304A (zh) * 2009-11-27 2010-05-19 中国科学院软件研究所 一种软件过程实施质量评测方法
CN107066384A (zh) * 2017-03-28 2017-08-18 东南大学 基于Halstead复杂度度量的软件演化评估方法
CN107239396A (zh) * 2017-05-11 2017-10-10 东南大学 一种基于代码圈复杂度度量的软件演化评估方法
CN109408359A (zh) * 2018-08-03 2019-03-01 中国人民解放军63928部队 一种软件测试过程质量度量方法和系统
CN109871317A (zh) * 2019-01-11 2019-06-11 平安普惠企业管理有限公司 代码质量分析方法及装置、存储介质及电子设备
KR20190110871A (ko) * 2018-03-21 2019-10-01 (주)씽크포비엘 목표 신뢰성 지수를 만족하도록 전장용 소프트웨어 안전성을 시뮬레이션하는 방법 및 장치

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
CN101710304A (zh) * 2009-11-27 2010-05-19 中国科学院软件研究所 一种软件过程实施质量评测方法
CN107066384A (zh) * 2017-03-28 2017-08-18 东南大学 基于Halstead复杂度度量的软件演化评估方法
CN107239396A (zh) * 2017-05-11 2017-10-10 东南大学 一种基于代码圈复杂度度量的软件演化评估方法
KR20190110871A (ko) * 2018-03-21 2019-10-01 (주)씽크포비엘 목표 신뢰성 지수를 만족하도록 전장용 소프트웨어 안전성을 시뮬레이션하는 방법 및 장치
CN109408359A (zh) * 2018-08-03 2019-03-01 中国人民解放军63928部队 一种软件测试过程质量度量方法和系统
CN109871317A (zh) * 2019-01-11 2019-06-11 平安普惠企业管理有限公司 代码质量分析方法及装置、存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A VASILEVA: "How to Improve Code Quality by Measurement and Refactoring", 《2016 10TH INTERNATIONAL CONFERENCE ON THE QUALITY OF INFORMATION AND COMMUNICATIONS TECHNOLOGY (QUATIC)》 *
赵宏远: "代码度量、过程度量和历史缺陷度量:工作量感知的缺陷预测能力比较", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN111274146B (zh) 2023-05-16

Similar Documents

Publication Publication Date Title
CN111666206B (zh) 变更代码的影响范围的获取方法、装置、设备及存储介质
CN112270399B (zh) 基于深度学习的算子注册处理方法、装置及电子设备
US20180365092A1 (en) Knowledge-based system for diagnosing errors in the execution of an operation
CN111752843B (zh) 用于确定影响面的方法、装置、电子设备及可读存储介质
CN112486820A (zh) 用于测试代码的方法、装置、设备以及存储介质
US11508162B2 (en) Method and apparatus for detecting mobile traffic light
CN112084150B (zh) 模型训练、数据检索方法,装置,设备以及存储介质
CN111224843B (zh) 资源链路监控方法、装置、设备和存储介质
CN111143577B (zh) 数据标注方法、装置和系统
CN111310840A (zh) 数据融合处理方法、装置、设备和存储介质
CN111654495B (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
CN111090991A (zh) 场景纠错方法、装置、电子设备和存储介质
CN111475164A (zh) 组件依赖关系检测方法、装置以及电子设备
CN111552646A (zh) 用于回归测试的方法和装置
US20210216710A1 (en) Method and apparatus for performing word segmentation on text, device, and medium
CN110472034B (zh) 问答系统的检测方法、装置、设备及计算机可读存储介质
CN111984545B (zh) 检测单元测试稳定性的方法、装置、电子设备及存储介质
CN112149828A (zh) 基于深度学习框架的算子精度检测方法和装置
US11907238B2 (en) Metadata-based software artifact search
CN111538656A (zh) 梯度检查的监控方法、装置、设备及存储介质
CN112015845A (zh) 地图检索测试的方法、装置、设备以及存储介质
CN112308602A (zh) 用于生成模型的方法和装置
CN110673994A (zh) 数据库测试方法及装置
CN111274146B (zh) 一种代码度量方法、装置、电子设备和介质
CN111104418A (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