CN111382052A - 代码质量评价方法、装置及电子设备 - Google Patents
代码质量评价方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111382052A CN111382052A CN201811638633.XA CN201811638633A CN111382052A CN 111382052 A CN111382052 A CN 111382052A CN 201811638633 A CN201811638633 A CN 201811638633A CN 111382052 A CN111382052 A CN 111382052A
- Authority
- CN
- China
- Prior art keywords
- code
- evaluated
- evaluation
- determining
- 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
Links
- 238000013441 quality evaluation Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000011156 evaluation Methods 0.000 claims abstract description 185
- 238000001514 detection method Methods 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 claims description 26
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000001303 quality assessment method Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 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/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种代码质量评价方法、装置及电子设备,应用于数据处理技术领域,其中该方法包括:获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种代码质量评价方法、装置及电子设备。
背景技术
代码是按照一定的程序设计语言规范编写的由字符、符号等组成的文本。一个程序项目往往由大量的代码构成。尤其是随着程序项目开发的大型化、复杂化,相应程序项目的代码的编写通常是由多个程序开发人员共同协作完成的,使得影响代码质量的因素更多,如不同程序开发人员编写的代码的功能的衔接问题、编写风格的统一问题等。如何对编写的代码的质量进行评价成为了一个问题。
目前,对代码的质量评价是通过人工的方式进行的,即由相关评价人员对相应的代码进行逐行阅读,确定并标记相应影响代码质量评价的因素,然后,对标记的影响代码质量评价因素进行统计分析,得到相应代码的质量评价结果。然而,根据现有的通过人工确定代码的质量评价结果信息的方式需要耗费较高的人力成本和时间成本,导致相应代码的质量评价的效率极低。此外,通常情况下,项目程序包含大量的代码,需要多个相关人员才能完成代码质量的评价。因此,现有的通过人工确定代码的质量评价结果信息的方式,存在效率低、人工成本高的问题。
发明内容
本申请提供了一种代码质量评价方法、装置及电子设备,用于提升代码质量评价的效率以及降低代码质量评价的人工成本,本申请采用的技术方案如下:
第一方面,提供了一种代码质量评价方法,该方法包括,
获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。
进一步地,待评价代码的至少一个维度的评价信息包括以下至少一项:
待评价代码的千行代码漏洞数评价信息;
待评价代码的代码重复率评价信息;
待评价代码的代码复杂度评价信息。
进一步地,确定待评价代码的千行代码漏洞数评价信息,包括:
确定待评价代码中的新增代码行数以及待评价代码的漏洞总数;
基于获取的待评价代码中的新增代码行数及待评价代码的漏洞总数,确定待检测代码的千行代码漏洞数;
基于确定的待检测代码的千行代码漏洞数,通过预设的评价方法,确定待评价代码的千行代码漏洞数评价信息。
进一步地,确定待评价代码的漏洞总数,包括:
确定待评价代码的各个类型的代码漏洞的数量,代码漏洞的类型包括以下至少一项:红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞;
基于各个类型的代码漏洞分别对应的第二权重值及各个类型的代码漏洞的数量,确定待评价代码的漏洞总数。
进一步地,确定待评价代码的代码重复率评价信息,包括:
基于相应的相似度判定算法确定待评价代码中重复使用代码的行数;
基于待评价代码中重复使用代码的行数与待评价代码的代码总行数确定待评价代码的代码重复率评价信息。
进一步地,确定待评价代码的代码复杂度评价信息,包括:
确定待评价代码对应的各个代码文件的函数复杂度;
基于确定的各个代码文件的函数复杂度确定待评价代码的代码复杂度;
基于待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息。
第二方面,提供了一种代码质量评价装置,该装置包括,
获取模块,用于获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
确定模块,用于基于预定的各个维度分别对应的第一权重值与获取模块获取的各个维度的评价信息,确定待评价代码的评价结果信息。
进一步地,待评价代码的至少一个维度的评价信息包括以下至少一项:
待评价代码的千行代码漏洞数评价信息;
待评价代码的代码重复率评价信息;
待评价代码的代码复杂度评价信息。
进一步地,该装置还包括漏洞评价模块,漏洞评价模块包括:第一确定单元、第二确定单元及第三确定单元;
第一确定单元,用于确定待评价代码中的新增代码行数以及待评价代码的漏洞总数;
第二确定单元,用于基于第一确定单元获取的待评价代码中的新增代码行数及待评价代码的漏洞总数,确定待检测代码的千行代码漏洞数;
第三确定单元,用于基于第二确定单元确定的待检测代码的千行代码漏洞数,通过预设的评价方法,确定待评价代码的千行代码漏洞数评价信息。
进一步地,第一确定单元,还用于确定待评价代码的各个类型的代码漏洞的数量,代码漏洞的类型包括以下至少一项:红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞;
以及用于基于各个类型的代码漏洞分别对应的第二权重值及各个类型的代码漏洞的数量,确定待评价代码的漏洞总数。
进一步地,该装置还包括重复率评价模块,重复率评价模块包括:第四确定单元及第五确定单元;
第四确定单元,用于基于相应的相似度判定算法确定待评价代码中重复使用代码的行数;
第五确定单元,用于基于第四确定单元确定的待评价代码中重复使用代码的行数与待评价代码的代码总行数确定待评价代码的代码重复率评价信息。
进一步地,该装置还包括复杂度评价模块,复杂度评价模块包括:第六确定单元、第七确定单元及第八确定单元;
第六确定单元,用于确定待评价代码对应的各个代码文件的函数复杂度;
第七确定单元,用于基于第六确定单元确定的各个代码文件的函数复杂度确定待评价代码的代码复杂度;
第八确定单元,用于基于第七确定单元确定的待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息。
第三方面,提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行第一方面所示的代码质量评价方法。
第四方面,提供了一种计算机可读存储介质,计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行第一方面所示的代码质量评价方法。
本申请提供了一种代码质量评价方法、装置及电子设备,与现有技术通过人工方式进行代码的质量评价相比,本申请通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的一种代码质量评价方法的流程示意图;
图2为本申请实施例的一种代码质量评价装置的结构示意图;
图3为本申请实施例的另一种代码质量评价装置的结构示意图;
图4为本申请实施例的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,各实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请实施例提供了一种代码质量评价方法,如图1所示,该方法包括,
步骤S101,获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
具体地,待评价代码可以是包含在多个代码文件中的,也可以包含在一个单独的代码文件中,从而可以对相应程序项目的整体质量或某一功能模块进行评价。
具体地,将待评价代码对应的一个或多个代码文件输入至相应的代码检测系统,相应的代码检测系统对待评价代码进行处理分析,生成待评价代码的至少一个维度的评价信息。其中,该评价信息可以是一个分数值。
步骤S102,基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。
具体地,各个维度都对应有一个预定的第一权重值,其中该第一权重值可以是人工设定的。
具体地,根据各个维度的第一权重值,对各个维度的评价信息进行加权计算,确定待评价代码的评价结果信息。
本申请实施例提供了一种代码质量评价方法,与现有技术通过人工方式进行代码的质量评价相比,本申请实施例通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
其中,待评价代码的至少一个维度的评价信息包括以下至少一项:
待评价代码的千行代码漏洞数评价信息;
待评价代码的代码重复率评价信息;
待评价代码的代码复杂度评价信息。
其中,待评价代码的至少一个维度的评价信息包括但不限于待评价代码的千行代码漏洞数评价信息、待评价代码的代码重复率评价信息、待评价代码的代码复杂度评价信息。
对于本申请实施例,待评价代码的评价信息包括多个维度,从而可以提升得到的待评价代码评价结果信息的合理性。
本申请实施例提供了一种可能的实现方式,具体地,确定待评价代码的千行代码漏洞数评价信息,包括:
步骤S103(图中未示出),确定待评价代码中的新增代码行数以及待评价代码的漏洞总数;
具体地,可以通过待评价代码的编写日期与设定的时间阈值期限确定待评价代码中的新增代码行数,可以通过相应的代码检测系统得到待评价代码的漏洞总数。
步骤S104(图中未示出),基于获取的待评价代码中的新增代码行数及待评价代码的漏洞总数,确定待检测代码的千行代码漏洞数;
具体地,可以根据相应的千行代码漏洞数计算公式确定待检测代码的千行代码漏洞数。其中,千行代码漏洞数计算方式可以通过公式1来表示:
千行代码漏洞数=漏洞总数/新增代码行数*1000公式1
步骤S105(图中未示出),基于确定的待检测代码的千行代码漏洞数,通过预设的评价方法,确定待评价代码的千行代码漏洞数评价信息。
具体地,基于确定的待检测代码的千行代码漏洞数,通过预设的评价方法,确定待评价代码的千行代码漏洞数评价信息,其中,该预设的评价方法可以是千行代码漏洞数的数量区间值与千行代码漏洞数评价信息的对应关系列表,该评价信息可以是一个具体的分数值。
对于本申请实施例,基于新增代码行数及漏洞总数确定千行代码漏洞数,并根据确定的千行代码漏洞数确定千行代码漏洞数评价信息,解决了千行代码漏洞数评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
本申请实施例提供了一种可能的实现方式,具体地,步骤S103中的确定待评价代码的漏洞总数,包括:
步骤S1031(图中未示出),确定待评价代码的各个类型的代码漏洞的数量,代码漏洞的类型包括以下至少一项:红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞;
具体地,代码漏洞的类型包括但不限于红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞,其中,红线代码漏洞指影响系统正常运行的漏洞(如可能造成系统崩溃等),安全性漏洞指涉及信息安全的漏洞(如可能造成客户信息泄露等),风格规范漏洞指程序的编码风格不统一的漏洞。
具体地,可以基于相应代码检测系统生成的各个漏洞代码分别对应的类型标签,确定各个类型的代码漏洞的数量。
步骤S1032(图中未示出),基于各个类型的代码漏洞分别对应的第二权重值及各个类型的代码漏洞的数量,确定待评价代码的漏洞总数。
具体地,各个类型的代码漏洞分别对应一个第二权重值,基于各个类型的漏洞代码对应的第二权重值,对各个类型的代码漏洞的数量进行加权计算,确定待评价代码的漏洞总数。其中,待评价代码漏洞总数的计算方式可以是通过公式2来表示:
待评价代码漏洞总数=10*红线代码漏洞数+10*安全性漏洞数+1*风格规范漏洞数+1*其他漏洞数公式2
对于本申请实施例,根据各个类型的代码漏洞的第二权重值及各个类型的代码漏洞的数量确定待评价代码的漏洞总数,从而解决了待评价代码的漏洞总数的确定问题。
本申请实施例提供了一种可能的实现方式,具体地,确定待评价代码的代码重复率评价信息,包括:
步骤S106(图中未示出),基于相应的相似度判定算法确定待评价代码中重复使用代码的行数;
具体地,可以确定各行代码的向量表征,通过计算各行代码之间的汉明距离或欧式距离,当各行代码之间的汉明距离或欧式距离小于预定的阈值时,判定相应的代码行为重复,然后根据判定为重复的代码行,确定待评价代码中重复使用代码的行数。其中,代码行是否重复的比对可以是逐行进行的,也可以是以一定阈值数量的行数为单位进行的,如以10行为单位进行比对。
步骤S107(图中未示出),基于待评价代码中重复使用代码的行数与待评价代码的代码总行数确定待评价代码的代码重复率评价信息。
其中,代码重复率的计算公式可以通过公式3来表示:
代码重复率=代码重复行数/代码总行数公式3
具体地,根据公式3确定待评价代码的代码重复率,然后根据确定的代码重复率区间值与重复率评价信息关系表确定待评价代码的重复率评价信息,例如,代码重复率为4%,根据代码重复率区间值与重复率评价信息关系表可知:3%-6%的代码重复率区间对应的重复率评价信息为85,则代码重复率为4%对应的重复率评价信息为85。
对于本申请实施例,基于待评价代码中重复使用代码的行数与待评价代码的总行数确定待评价代码的代码重复率评价信息,从而解决了代码重复率评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
本申请实施例提供了一种可能的实现方式,具体地,确定待评价代码的代码复杂度评价信息,包括:
步骤S108(图中未示出),确定待评价代码对应的各个代码文件的函数复杂度;
对于本实施例,通过相应的函数复杂度确定方法确定待评价代码对应的各个代码文件的函数复杂度;其中,该函数复杂度可以是圈复杂度(Cyclomatic complexity),圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护。
示例性的,如果一段代码中不包含控制流语句(条件或决策点),则该段代码的圈复杂度为1,因为该段代码中只会有一条路径;如果一段代码中仅包含一个if语句,且if语句仅有一个条件,则该段代码的圈复杂度为2;包含两个嵌套的if语句,或是一个if语句有两个条件的代码块的圈复杂度为3。
步骤S109(图中未示出),基于确定的各个代码文件的函数复杂度确定待评价代码的代码复杂度;
具体地,可以以各个代码文件的函数复杂度的平均值作为待评价代码的代码复杂度。
步骤S110(图中未示出),基于待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息。
具体地,可以基于代码复杂度与代码复杂度评价信息的映射关系列表确定待评价代码的代码复杂度评价信息。
对于本实施例,通过确定待评价代码对应的各个代码文件的函数复杂度,并根据各个代码文件的函数复杂度确定待评价代码的代码复杂度,然后根据待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息,从而解决了待评价代码的代码复杂度评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
图2为本申请实施例提供的一种代码质量评价装置,该装置20包括:获取模块201、确定模块202;
获取模块201,用于获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
确定模块202,用于基于预定的各个维度分别对应的第一权重值与获取模块201获取的各个维度的评价信息,确定待评价代码的评价结果信息。
本申请实施例提供了一种代码质量评价装置,与现有技术通过人工方式进行代码的质量评价相比,本申请实施例通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
本实施例的代码质量评价装置可执行本申请上述实施例中提供的一种代码质量评价方法,其实现原理相类似,此处不再赘述。
本申请实施例提供了另一种代码质量评价装置,如图3所示,本实施例的装置30包括:获取模块301、确定模块302;
获取模块301,用于获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
其中,图3中的获取模块301与图2中的获取模块201的功能相同或者相似。
确定模块302,用于基于预定的各个维度分别对应的第一权重值与获取模块301获取的各个维度的评价信息,确定待评价代码的评价结果信息。
其中,图3中的确定模块302与图2中的确定模块202的功能相同或者相似。
本申请实施例提供了一种可能的实现方式,其中,待评价代码的至少一个维度的评价信息包括以下至少一项:
待评价代码的千行代码漏洞数评价信息;
待评价代码的代码重复率评价信息;
待评价代码的代码复杂度评价信息。
对于本申请实施例,待评价代码的评价信息包括多个维度,从而可以提升得到的待评价代码评价结果信息的合理性。
本申请实施例提供了一种可能的实现方式,进一步地,该装置还包括漏洞评价模块303,漏洞评价模块303包括:第一确定单元3031、第二确定单元3032及第三确定单元3033;
第一确定单元3031,用于确定待评价代码中的新增代码行数以及待评价代码的漏洞总数;
第二确定单元3032,用于基于第一确定单元3031获取的待评价代码中的新增代码行数及待评价代码的漏洞总数,确定待检测代码的千行代码漏洞数;
第三确定单元3033,用于基于第二确定单元3032确定的待检测代码的千行代码漏洞数,通过预设的评价方法,确定待评价代码的千行代码漏洞数评价信息。
对于本申请实施例,基于新增代码行数及漏洞总数确定千行代码漏洞数,并根据确定的千行代码漏洞数确定千行代码漏洞数评价信息,解决了千行代码漏洞数评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
本申请实施例提供了一种可能的实现方式,具体地,第一确定单元3031,还用于确定待评价代码的各个类型的代码漏洞的数量,代码漏洞的类型包括以下至少一项:红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞;
以及用于基于各个类型的代码漏洞分别对应的第二权重值及各个类型的代码漏洞的数量,确定待评价代码的漏洞总数。
对于本申请实施例,根据各个类型的代码漏洞的第二权重值及各个类型的代码漏洞的数量确定待评价代码的漏洞总数,从而解决了待评价代码的漏洞总数的确定问题。
本申请实施例提供了一种可能的实现方式,进一步地,该装置还包括重复率评价模块304,重复率评价模块包括:第四确定单元3041及第五确定单元3042;
第四确定单元3041,用于基于相应的相似度判定算法确定待评价代码中重复使用代码的行数;
第五确定单元3042,用于基于第四确定单元3041确定的待评价代码中重复使用代码的行数与待评价代码的代码总行数确定待评价代码的代码重复率评价信息。
对于本申请实施例,基于待评价代码中重复使用代码的行数与待评价代码的总行数确定待评价代码的代码重复率评价信息,从而解决了代码重复率评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
本申请实施例提供了一种可能的实现方式,进一步地,该装置还包括复杂度评价模块305,复杂度评价模块305包括:第六确定单元3051、第七确定单元3052及第八确定单元3053;
第六确定单元3051,用于确定待评价代码对应的各个代码文件的函数复杂度;
第七确定单元3052,用于基于第六确定单元3051确定的各个代码文件的函数复杂度确定待评价代码的代码复杂度;
第八确定单元3053,用于基于第七确定单元3052确定的待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息。
对于本实施例,通过确定待评价代码对应的各个代码文件的函数复杂度,并根据各个代码文件的函数复杂度确定待评价代码的代码复杂度,然后根据待评价代码的代码复杂度确定待评价代码的代码复杂度评价信息,从而解决了待评价代码的代码复杂度评价信息的确定问题,为待评价代码的评价结果信息的确定提供了基础。
本申请实施例提供了一种代码质量评价装置,与现有技术通过人工方式进行代码的质量评价相比,本申请实施例通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
本申请实施例提供的代码质量评价装置适用于上述方法实施例,在此不再赘述。
本申请实施例提供了一种电子设备,如图4所示,图4所示的电子设备40包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。进一步地,电子设备40还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备400的结构并不构成对本申请实施例的限定。
其中,处理器4001应用于本申请实施例中,用于实现图2或图3所示的获取模块、确定模块的功能,以及用于实现图3所示的漏洞评价模块、重复率评价模块以及复杂度评价模块的功能。收发器4004包括接收机和发射机。
处理器4001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI总线或EISA总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器4003用于存储执行本申请方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现图2或图3所示实施例提供的代码质量评价装置的功能。
本申请实施例提供了一种电子设备适用于上述方法实施例。在此不再赘述。
本申请实施例提供了一种电子设备,与现有技术通过人工方式进行代码的质量评价相比,本申请实施例通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述实施例中所示的方法。
本申请实施例提供了一种计算机可读存储介质,与现有技术通过人工方式进行代码的质量评价相比,本申请实施例通过获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息,然后基于预定的各个维度分别对应的第一权重值与各个维度的评价信息,确定待评价代码的评价结果信息。即自动确定待评价代码的各个维度的评价信息,然后根据各个维度的评价信息自动确定待评价代码的评价结果信息,从而实现了待评价代码的质量的自动评价,提升了待评价代码质量评价的效率,此外,自动确定待评价代码的评价结果信息,不需要相关评价人员即能完成待评价代码的评价工作,从而降低了待评价代码的质量评价的人工成本,且降低人工评价的主观影响因素,提高代码质量评价的准确性。
本申请实施例提供了一种计算机可读存储介质适用于上述方法实施例。在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种代码质量评价方法,其特征在于,包括:
获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
基于预定的各个维度分别对应的第一权重值与各个维度的所述评价信息,确定所述待评价代码的评价结果信息。
2.根据权利要求1所述的方法,其特征在于,所述待评价代码的至少一个维度的评价信息包括以下至少一项:
所述待评价代码的千行代码漏洞数评价信息;
所述待评价代码的代码重复率评价信息;
所述待评价代码的代码复杂度评价信息。
3.根据权利要求2所述的方法,其特征在于,确定所述待评价代码的千行代码漏洞数评价信息,包括:
确定所述待评价代码中的新增代码行数以及所述待评价代码的漏洞总数;
基于获取的所述待评价代码中的新增代码行数及所述待评价代码的漏洞总数,确定所述待检测代码的千行代码漏洞数;
基于确定的所述待检测代码的千行代码漏洞数,通过预设的评价方法,确定所述待评价代码的千行代码漏洞数评价信息。
4.根据权利要求3所述的方法,其特征在于,确定所述待评价代码的漏洞总数,包括:
确定所述待评价代码的各个类型的代码漏洞的数量,所述代码漏洞的类型包括以下至少一项:红线代码漏洞、安全性漏洞、风格规范漏洞、其他漏洞;
基于各个类型的代码漏洞分别对应的第二权重值及各个类型的代码漏洞的数量,确定所述待评价代码的漏洞总数。
5.根据权利要求2所述的方法,其特征在于,确定所述待评价代码的代码重复率评价信息,包括:
基于相应的相似度判定算法确定所述待评价代码中重复使用代码的行数;
基于所述待评价代码中重复使用代码的行数与所述待评价代码的代码总行数确定所述待评价代码的代码重复率评价信息。
6.根据权利要求2所述的方法,其特征在于,确定所述待评价代码的代码复杂度评价信息,包括:
确定所述待评价代码对应的各个代码文件的函数复杂度;
基于确定的各个代码文件的函数复杂度确定所述待评价代码的代码复杂度;
基于所述待评价代码的代码复杂度确定所述待评价代码的代码复杂度评价信息。
7.一种代码质量评价装置,其特征在于,包括:
获取模块,用于获取代码检测系统自动生成的待评价代码的至少一个维度的评价信息;
确定模块,用于基于预定的各个维度分别对应的第一权重值与所述获取模块获取的各个维度的所述评价信息,确定所述待评价代码的评价结果信息。
8.根据权利要求7所述的装置,其特征在于,所述待评价代码的至少一个维度的评价信息包括以下至少一项:
所述待评价代码的千行代码漏洞数评价信息;
所述待评价代码的代码重复率评价信息;
所述待评价代码的代码复杂度评价信息。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行根据权利要求1至6任一项所述的代码质量评价方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述权利要求1至6中任一项所述的代码质量评价方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811638633.XA CN111382052A (zh) | 2018-12-29 | 2018-12-29 | 代码质量评价方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811638633.XA CN111382052A (zh) | 2018-12-29 | 2018-12-29 | 代码质量评价方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111382052A true CN111382052A (zh) | 2020-07-07 |
Family
ID=71218105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811638633.XA Pending CN111382052A (zh) | 2018-12-29 | 2018-12-29 | 代码质量评价方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111382052A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000573A (zh) * | 2020-08-17 | 2020-11-27 | 苏州达家迎信息技术有限公司 | 代码质量的监控方法、装置、计算机设备及介质 |
WO2023179578A1 (zh) * | 2022-03-21 | 2023-09-28 | 中兴通讯股份有限公司 | 代码度量方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793315A (zh) * | 2012-10-29 | 2014-05-14 | Sap股份公司 | 监视和改善软件开发质量 |
CN108197018A (zh) * | 2017-12-12 | 2018-06-22 | 链家网(北京)科技有限公司 | 一种软件代码缺陷率统计方法及装置 |
CN108804323A (zh) * | 2018-06-06 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 代码质量监控方法、设备及存储介质 |
-
2018
- 2018-12-29 CN CN201811638633.XA patent/CN111382052A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793315A (zh) * | 2012-10-29 | 2014-05-14 | Sap股份公司 | 监视和改善软件开发质量 |
CN108197018A (zh) * | 2017-12-12 | 2018-06-22 | 链家网(北京)科技有限公司 | 一种软件代码缺陷率统计方法及装置 |
CN108804323A (zh) * | 2018-06-06 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 代码质量监控方法、设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000573A (zh) * | 2020-08-17 | 2020-11-27 | 苏州达家迎信息技术有限公司 | 代码质量的监控方法、装置、计算机设备及介质 |
CN112000573B (zh) * | 2020-08-17 | 2022-10-28 | 苏州达家迎信息技术有限公司 | 代码质量的监控方法、装置、计算机设备及介质 |
WO2023179578A1 (zh) * | 2022-03-21 | 2023-09-28 | 中兴通讯股份有限公司 | 代码度量方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Colas et al. | How many random seeds? statistical power analysis in deep reinforcement learning experiments | |
US10678673B2 (en) | Software program fault localization | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN111338692B (zh) | 基于漏洞代码的漏洞分类方法、装置及电子设备 | |
CN112395179B (zh) | 一种模型训练方法、磁盘预测方法、装置及电子设备 | |
CN109446066B (zh) | C/c++程序中不可达代码的静态检测方法及系统 | |
CN115659335A (zh) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 | |
CN111382052A (zh) | 代码质量评价方法、装置及电子设备 | |
CN109800152A (zh) | 一种自动化测试方法及终端设备 | |
CN110046086B (zh) | 用于测试的期望数据生成方法及装置和电子设备 | |
CN114297665A (zh) | 基于深度学习的智能合约漏洞检测方法和装置 | |
CN112181479A (zh) | 代码文件版本间差异的确定方法、装置及电子设备 | |
CN108469987B (zh) | 一种基于中断控制流图的中断验证系统 | |
CN110888811A (zh) | 代码覆盖率信息处理方法、装置、电子设备及介质 | |
CN111178037A (zh) | 重复缺陷报告识别方法、装置及电子设备 | |
US10628161B2 (en) | Processor for correlation-based infinite loop detection | |
CN115543435A (zh) | 基于开发贡献值的软件开发质量衡量方法、装置及设备 | |
CN115525660A (zh) | 一种数据表的校验方法、装置、设备及介质 | |
KR102275635B1 (ko) | 함수 호출 패턴 분석을 통한 이상 검출 장치 및 방법 | |
CN115393617A (zh) | 一种基于多卷积核检验的模仿式商标快速检测方法及系统 | |
CN109886119B (zh) | 一种基于工控信号的控制功能分类方法及系统 | |
CN111382059A (zh) | 代码质量评价方法及系统 | |
CN111352825B (zh) | 数据接口的测试方法、装置及服务器 | |
CN112860539B (zh) | 模型评估检测方法及装置 | |
CN110008124B (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 |