CN108804323A - 代码质量监控方法、设备及存储介质 - Google Patents

代码质量监控方法、设备及存储介质 Download PDF

Info

Publication number
CN108804323A
CN108804323A CN201810576023.5A CN201810576023A CN108804323A CN 108804323 A CN108804323 A CN 108804323A CN 201810576023 A CN201810576023 A CN 201810576023A CN 108804323 A CN108804323 A CN 108804323A
Authority
CN
China
Prior art keywords
index
sub
code
evaluation
quality
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
CN201810576023.5A
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.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China 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 Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201810576023.5A priority Critical patent/CN108804323A/zh
Publication of CN108804323A publication Critical patent/CN108804323A/zh
Pending legal-status Critical Current

Links

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/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种代码质量监控方法,该方法包括:对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据;将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别;根据每个子指标对应的数据,确定每个子指标的评分;计算每个子指标对应的权重;基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。本发明还提供一种电子设备及存储介质。本发明对代码质量进行定性与定量分析,并能根据评价结果,提出修复建议,从而提高代码的维护效率。

Description

代码质量监控方法、设备及存储介质
技术领域
本发明涉及人工智能领域,尤其涉及一种代码质量监控方法、设备及存储介质。
背景技术
现项目依托庞大的系统架构采用多模块子项目集成化,但不同来源的子模块代码质量没有统一的质量评价体系,许多模块存在多处重复冗余代码、错误低效的代码书写、体积繁重且无用地下的资源、造成了集成后的系统庞大臃肿且多处代码质量不稳定,集成子模块代码时没有代码质量监控,集成子模块代码后无法针对全局系统项目进行有效的质量保证。
发明内容
鉴于以上内容,有必要提供一种代码质量监控方法、设备及存储介质,能从多个层次指标上评价代码质量,对代码质量进行定性与定量分析,并能根据评价结果,提出修复建议,从而提高代码的维护效率。
一种代码质量监控方法,所述方法包括:
对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据;
将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别;
根据每个子指标对应的数据,确定每个子指标的评分;
计算每个子指标对应的权重;
基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。
根据本发明优选实施例,所述提取与编码规范条件不匹配的数据包括以下一种或者多种的组合:
提取与配置的编码语法不匹配的代码数据;
提取冗余代码数据;
提取调用文件大小超过阈值的代码。
根据本发明优选实施例,所述多个代码评价指标包括以下一种或者多种指标的组合:命名指标、布局指标、结构指标、冗余代码指标、文件大小指标。
根据本发明优选实施例,所述根据每个子指标对应的数据,确定每个子指标的评分包括:
获取每个子指标对应的专家评分;
根据每个子指标对应的数据,确定每个子指标对应的缺陷数量;
将每个子指标对应的缺陷数量与每个子指标对应的专家评分的乘积作为每个子指标的扣分,并将每个子指标的总分减去每个子指标的扣分作为每个子指标的评分。
根据本发明优选实施例,所述计算每个子指标对应的权重包括:
计算每个代码评价指标相对于代码评价指标体系的权重;
计算每个子指标相对于每个代码评价指标的权重;
基于每个代码评价指标相对于代码评价指标体系的权重及每个子指标相对于每个代码评价指标的权重进行加权和,确定每个子指标对应的权重。
根据本发明优选实施例,所述基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告包括以下一种或者多种的组合:
基于每个子指标的评分及每个子指标对应的权重,计算所述目标源程序代码的总评分,并展示在所述质量评价报告;
基于每个代码评价指标包含的每个子指标的评分及权重,计算每个代码评价指标的评分,基于每个代码评价指标的评分,在所述质量评价报告中显示每个代码评价指标的质量。
根据本发明优选实施例,所述方法还包括:
定期对所述目标源程序代码进行评价,并将每次评价的结果与历史评价结果进行比较,输出比较结果。
根据每个代码评价指标的评分,筛选出评分低于阈值的目标代码评价指标,并获取所述目标代码评价指标对应的子指标,根据目标代码评价指标对应的的子指标对应的规范内容,显示所述目标源程序代码的修复建议。
一种电子设备,所述电子设备包括存储器及处理器,所述存储器用于存储至少一个指令,所述处理器用于执行所述至少一个指令以实现任一实施例中所述代码质量监控方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现任一实施例中所述代码质量监控方法。
由以上技术方案可知,本发明对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据;将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别;根据每个子指标对应的数据,确定每个子指标的评分;计算每个子指标对应的权重;基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。本发明能从多个层次指标上评价代码质量,对代码质量进行定性与定量分析,并能根据评价结果,提出修复建议,从而提高代码的维护效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明代码质量监控方法的较佳实施例的流程图。
图2是代码评价指标体系的层次结构示意图。
图3是本发明代码质量监控装置的较佳实施例的程序模块图。
图4是本发明至少一个实例中代码质量监控装置的较佳实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图1所示,是本发明代码质量监控方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S10、对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据。
在本发明中,所述目标源程序代码包括,但不限于以下一种或者多种组合:源程序文件、工程文件。所述目标源程序代码可以是通过不同程序语言设计的代码。
优选地,在对所述目标源程序代码扫描之前,对所述目标源程序代码进行预处理,解析程序代码中所有的头文件信息和宏信息,替换到所述目标源程序代码中相应的位置上。
可选地,所述提取与编码规范条件不匹配的数据包括,但不限于以下一种或者多种的组合:
(1)提取与配置的编码语法不匹配的代码数据。
可选地,所述编码语法包括,但不限于:命名语法、布局语法、结构语法等等。
进一步地,所述命名语法用于给变量、符号常量、函数等命名的规则。例如,一个合法的名字由字母、数字和下划线三种字符组成,且第一个字符必须为字母或者下划线等等。规范的程序代码能提高程序的可读性。
进一步地,所述命名语法包括,但不限于以下组合:函数命名语法、抽象类命名语法、类的参数命名语法、局部变量命名语法等等,本发明对所述命名语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,所述布局语法用于规范布局格式。所述布局语法包括,但不限于:缩进的格式、空格的运用、代码长度(如不超过80个字符)等等。合理的布局能使程序结构更加清晰,从而提高代码的可读性。本发明对所述布局语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,所述结构语法用于规范控制语句的使用及编码中需要注意的其他事项。例如,在源程序代码中不建议使用goto语句,因为该语句的使用容易导致程序错误。
进一步地,所述结构语法包括,但不限于:内嵌语句中不使用条件操作、if,while,do等在构造函数或方法中出现的数目不能超过预设数目等等。本发明对所述结构语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,可以利用findbugs代码比对工具提取与配置的编码语法不匹配的代码数据。所述findbugs代码比对工具是现有技术,本发明不再详述。
(2)提取冗余代码数据。
可选地,所述提取冗余代码数据包括:将所述目标源程序代码划分成多个子程序模块,获取每个子程序模块调用的API(Application Programming Interface,应用程序编程接口)数据,将调用的API数据相同的子程序模块对应的代码确定为相冗余代码。筛选出冗余代码后,便于后续对冗余代码进行维护。
(3)提取调用文件大小超过阈值的代码。
可选地,获取调用文件的API数据,并计算每个API文件的大小,将文件大小超过阈值的API数据作为所述调用文件大小超过阈值的代码。其中所述文件包括,但不限于:图片、各种格式的文档(如word文档、PDF文档)等等。
S11、将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别。
在本发明的可选实施例中,利用层次结构图配置代码评价指标体系,
如图2所示,所述代码评价指标体系包括,但不限于以下一种或者多种指标的组合:命名指标、布局指标、结构指标、冗余代码指标、文件大小指标。每个指标包括至少一个子指标,其中n,m,p,q,a分别为正整数。
可选地,根据所述提取的数据对应的编码规范条件,将所述提取的数据分类到所述代码评价指标体系中的一个子指标的类别中。例如,子指标11对应的类别是“不使用goto语句”,一条提取的数据中包含goto语句,则将包含goto语句的数据分类到子指标11中。
S12、根据每个子指标对应的数据,确定每个子指标的评分。
优选地,所述根据每个子指标对应的数据,确定每个子指标的评分包括:
(1)获取每个子指标对应的专家评分。
在本发明中,每个子指标是一类评价指标,例如,一个子指标用于评价代码行的字数,要求是“一行不应超过88个字符”。可以事先通过发放问卷的形式,向多个专家的终端设备发送问卷数据,获取对每个子指标的多个专家评分,将每个子指标的多个专家评分进行平均作为每个子指标的专家评分。每个子指标的专家评分用于评价每个子指标的单项扣分的分数。例如,对于“一行不应超过88个字符”的子指标而言,对应的专家评分为0.5分,即出现一次某一行超过88个字符的代码行,则所述子指标的评分就相应减少0.5分。
(2)根据每个子指标对应的数据,确定每个子指标对应的缺陷数量。
在本发明中,将每个子指标对应的数据中包含的缺陷数量确定为每个子指标对应的缺陷数量。例如,若在对所述目标源程序代码扫描时,共有6行代码出现了超过88个字符的代码行,则“一行不应超过88个字符”这个子指标对应的缺陷数量为6。
(3)将每个子指标对应的缺陷数量与每个子指标对应的专家评分的乘积作为每个子指标的扣分,并将每个子指标的总分减去每个子指标的扣分作为每个子指标的评分。
例如,“一行不应超过88个字符”这个子指标对应的缺陷数量为6,对应的专家评分为0.5分。每个子指标的总分为100分,则这个子指标的评分为(100-6*0.5)
S13、计算每个子指标对应的权重。
在本发明中,在层级结构体系建立之后,就需要确定上下层元素间的关系,因此用判断矩阵法算出各层元素对于支配其上一层元素的相对重要程度,即权重。因此,所述计算每个子指标对应的权重包括:
(1)计算每个代码评价指标相对于代码评价指标体系的权重。
在本发明的可选实施例中,利用层次分析法计算每个代码评价指标相对于代码评价指标体系的权重。进一步地,基于原则层B中每个指标对代码评价指标体系的重要性进行评价,构造两两比较第一判断矩阵,其中所述第一判断矩阵根据专家的打分进行构造,再对所述第一判断矩阵进行处理,计算每个代码评价指标相对于代码评价指标体系的权重。层次分析法的处理过程为现有技术,本发明不再详述。
(2)计算每个子指标相对于每个代码评价指标的权重。
在本发明的可选实施例中,利用层次分析法计算每个子指标相对于每个代码评价指标的权重。进一步地,基于原则层C中每个子指标对代码评价指标的重要性进行评价,构造两两比较第二判断矩阵,其中所述第二判断矩阵根据专家的打分进行构造,再对所述第二判断矩阵进行处理,计算每个子指标相对于每个代码评价指标的权重。层次分析法的处理过程为现有技术,本发明不再详述。
(3)基于每个代码评价指标相对于代码评价指标体系的权重及每个子指标相对于每个代码评价指标的权重进行加权和,确定每个子指标对应的权重。
具体地,其中ωj表示第j个子指标对应的权重,Bi表示第i个代码评价指标相对于代码评价指标体系的权重,Cij表示第j个子指标相对于第i个代码评价指标的权重,T表示代码评价指标的总数量。
例如,如图2所示,原则层B相对于目标层A的权重为分别为(0.16、0.2、0.2、0.34、0.1),其中0.16表示命名评价指标在代码评价体系中的权重,即向量B=(0.16,0.2,0.2,0.34,0.1),若子指标11相对于原则层B中5个代码评价指标的权重分别为(0.9,0.02,0.02,0.01,0.05),则子指标11的权重为0.16*0.9+0.2*0.02+0.2*0.02+0.31*0.01+0.1*0.05)=0.188。从上述举例可以出,在图2中,子指标11包括在命名评价指标中,则子指标相对于命名评价指标的权重较高,相对于其他指标的权重较低。
在上述实施例中,利用层次分析法计算每个子指标对应的权重,从而实现对每个子指标对应的权重的定性与定量分析,提高了评价的准确度。
S14、基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。
优选地,所述基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告包括以下一种或者多种的组合:
(1)基于每个子指标的评分及每个子指标对应的权重,计算所述目标源程序代码的总评分,并展示在所述质量评价报告。
优选地,所述目标源程序代码的总评分等于每个子指标的评分乘以每个子指标对应的权重的之和。
(2)基于每个代码评价指标包含的每个子指标的评分及权重,计算每个代码评价指标的评分,基于每个代码评价指标的评分,在所述质量评价报告中显示每个代码评价指标的质量。
这样显示每个代码评价指标的质量后,代码维护人员可以直观地知道质量比较差的代码评价指标。
在上述实施例中,所述质量评价报告的形式包括,但不限于以下一种或者多种组合:图表、文字。
优选地,定期对所述目标源程序代码进行评价,并将每次评价的结果与历史评价结果进行比较,输出比较结果,以让维护人员直观看到所述目标源程序代码的维护趋势状况,以对所述目标源程序代码进行及时修复。
优选地,所述方法还包括:根据每个代码评价指标的评分,筛选出评分低于阈值的目标代码评价指标,并获取所述目标代码评价指标的子指标,根据目标代码评价指标的子指标对应的规范内容,显示所述所述目标源程序代码的修复建议。
本发明对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据,将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别,根据每个子指标对应的数据,确定每个子指标的评分,计算每个子指标对应的权重,基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。本发明能从多个层次指标上评价代码质量,对代码质量进行定性与定量分析,并能根据评价结果,提出修复建议,从而提高代码的维护效率。
如图3所示,本发明代码质量监控装置的较佳实施例的程序模块图。所述代码质量监控装置3包括,但不限于以下一个或者多个程序模块:提取模块30、确定模块31、计算模块32、输出模块33、更新模块34及展示模块35。本发明所称的程序模块是指一种能够被代码质量监控装置3的处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。关于各模块的功能将在后续的实施例中详述。
所述提取模块30对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据。
在本发明中,所述目标源程序代码包括,但不限于以下一种或者多种组合:源程序文件、工程文件。所述目标源程序代码可以是通过不同程序语言设计的代码。
优选地,所述提取模块30还用于:在对所述目标源程序代码扫描之前,对所述目标源程序代码进行预处理,解析程序代码中所有的头文件信息和宏信息,替换到所述目标源程序代码中相应的位置上。
可选地,所述提取模块30提取与编码规范条件不匹配的数据包括,但不限于以下一种或者多种的组合:
(1)提取与配置的编码语法不匹配的代码数据。
可选地,所述编码语法包括,但不限于:命名语法、布局语法、结构语法等等。
进一步地,所述命名语法用于给变量、符号常量、函数等命名的规则。例如,一个合法的名字由字母、数字和下划线三种字符组成,且第一个字符必须为字母或者下划线等等。规范的程序代码能提高程序的可读性。
进一步地,所述命名语法包括,但不限于以下组合:函数命名语法、抽象类命名语法、类的参数命名语法、局部变量命名语法等等,本发明对所述命名语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,所述布局语法用于规范布局格式。所述布局语法包括,但不限于:缩进的格式、空格的运用、代码长度(如不超过80个字符)等等。合理的布局能使程序结构更加清晰,从而提高代码的可读性。本发明对所述布局语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,所述结构语法用于规范控制语句的使用及编码中需要注意的其他事项。例如,在源程序代码中不建议使用goto语句,因为该语句的使用容易导致程序错误。
进一步地,所述结构语法包括,但不限于:内嵌语句中不使用条件操作、if,while,do等在构造函数或方法中出现的数目不能超过预设数目等等。本发明对所述结构语法所包含的种类并不限于本发明的举例,不做任何限制。
可选地,可以利用findbugs代码比对工具提取与配置的编码语法不匹配的代码数据。所述findbugs代码比对工具是现有技术,本发明不再详述。
(2)提取冗余代码数据。
可选地,所述提取冗余代码数据包括:将所述目标源程序代码划分成多个子程序模块,获取每个子程序模块调用的API(Application Programming Interface,应用程序编程接口)数据,将调用的API数据相同的子程序模块对应的代码确定为相冗余代码。筛选出冗余代码后,便于后续对冗余代码进行维护。
(3)提取调用文件大小超过阈值的代码。
可选地,获取调用文件的API数据,并计算每个API文件的大小,将文件大小超过阈值的API数据作为所述调用文件大小超过阈值的代码。其中所述文件包括,但不限于:图片、各种格式的文档(如word文档、PDF文档)等等。
所述确定模块31将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别。
在本发明的可选实施例中,利用层次结构图配置代码评价指标体系,如图2所示,所述代码评价指标体系包括,但不限于以下一种或者多种指标的组合:命名指标、布局指标、结构指标、冗余代码指标、文件大小指标。每个指标包括至少一个子指标,其中n,m,p,q,a分别为正整数。
可选地,根据所述提取的数据对应的编码规范条件,将所述提取的数据分类到所述代码评价指标体系中的一个子指标的类别中。例如,子指标11对应的类别是“不使用goto语句”,一条提取的数据中包含goto语句,则将包含goto语句的数据分类到子指标11中。
所述确定模块31根据每个子指标对应的数据,确定每个子指标的评分。
优选地,所述确定模块31根据每个子指标对应的数据,确定每个子指标的评分包括:
(1)获取每个子指标对应的专家评分。
在本发明中,每个子指标是一类评价指标,例如,一个子指标用于评价代码行的字数,要求是“一行不应超过88个字符”。可以事先通过发放问卷的形式,向多个专家的终端设备发送问卷数据,获取对每个子指标的多个专家评分,将每个子指标的多个专家评分进行平均作为每个子指标的专家评分。每个子指标的专家评分用于评价每个子指标的单项扣分的分数。例如,对于“一行不应超过88个字符”的子指标而言,对应的专家评分为0.5分,即出现一次某一行超过88个字符的代码行,则所述子指标的评分就相应减少0.5分。
(2)根据每个子指标对应的数据,确定每个子指标对应的缺陷数量。
在本发明中,将每个子指标对应的数据中包含的缺陷数量确定为每个子指标对应的缺陷数量。例如,若在对所述目标源程序代码扫描时,共有6行代码出现了超过88个字符的代码行,则“一行不应超过88个字符”这个子指标对应的缺陷数量为6。
(3)将每个子指标对应的缺陷数量与每个子指标对应的专家评分的乘积作为每个子指标的扣分,并将每个子指标的总分减去每个子指标的扣分作为每个子指标的评分。
例如,“一行不应超过88个字符”这个子指标对应的缺陷数量为6,对应的专家评分为0.5分。每个子指标的总分为100分,则这个子指标的评分为(100-6*0.5)
所述计算模块32计算每个子指标对应的权重。
在本发明中,在层级结构体系建立之后,就需要确定上下层元素间的关系,因此用判断矩阵法算出各层元素对于支配其上一层元素的相对重要程度,即权重。因此,所述计算模块32计算每个子指标对应的权重包括:
(1)计算每个代码评价指标相对于代码评价指标体系的权重。
在本发明的可选实施例中,利用层次分析法计算每个代码评价指标相对于代码评价指标体系的权重。进一步地,基于原则层B中每个指标对代码评价指标体系的重要性进行评价,构造两两比较第一判断矩阵,其中所述第一判断矩阵根据专家的打分进行构造,再对所述第一判断矩阵进行处理,计算每个代码评价指标相对于代码评价指标体系的权重。层次分析法的处理过程为现有技术,本发明不再详述。
(2)计算每个子指标相对于每个代码评价指标的权重。
在本发明的可选实施例中,利用层次分析法计算每个子指标相对于每个代码评价指标的权重。进一步地,基于原则层C中每个子指标对代码评价指标的重要性进行评价,构造两两比较第二判断矩阵,其中所述第二判断矩阵根据专家的打分进行构造,再对所述第二判断矩阵进行处理,计算每个子指标相对于每个代码评价指标的权重。层次分析法的处理过程为现有技术,本发明不再详述。
(3)基于每个代码评价指标相对于代码评价指标体系的权重及每个子指标相对于每个代码评价指标的权重进行加权和,确定每个子指标对应的权重。
具体地,其中ωj表示第j个子指标对应的权重,Bi表示第i个代码评价指标相对于代码评价指标体系的权重,Cij表示第j个子指标相对于第i个代码评价指标的权重,T表示代码评价指标的总数量。
例如,如图2所示,原则层B相对于目标层A的权重为分别为(0.16、0.2、0.2、0.34、0.1),其中0.16表示命名评价指标在代码评价体系中的权重,即向量B=(0.16,0.2,0.2,0.34,0.1),若子指标11相对于原则层B中5个代码评价指标的权重分别为(0.9,0.02,0.02,0.01,0.05),则子指标11的权重为0.16*0.9+0.2*0.02+0.2*0.02+0.31*0.01+0.1*0.05)=0.188。从上述举例可以出,在图2中,子指标11包括在命名评价指标中,则子指标相对于命名评价指标的权重较高,相对于其他指标的权重较低。
在上述实施例中,利用层次分析法计算每个子指标对应的权重,从而实现对每个子指标对应的权重的定性与定量分析,提高了评价的准确度。
所述输出模块33基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。
优选地,所述输出模块33基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告包括以下一种或者多种的组合:
(1)基于每个子指标的评分及每个子指标对应的权重,计算所述目标源程序代码的总评分,并展示在所述质量评价报告。
优选地,所述目标源程序代码的总评分等于每个子指标的评分乘以每个子指标对应的权重的之和。
(2)基于每个代码评价指标包含的每个子指标的评分及权重,计算每个代码评价指标的评分,基于每个代码评价指标的评分,在所述质量评价报告中显示每个代码评价指标的质量。
这样显示每个代码评价指标的质量后,代码维护人员可以直观地知道质量比较差的代码评价指标。
在上述实施例中,所述质量评价报告的形式包括,但不限于以下一种或者多种组合:图表、文字。
优选地,所述更新模块34定期对所述目标源程序代码进行评价,并将每次评价的结果与历史评价结果进行比较,输出比较结果,以让维护人员直观看到所述目标源程序代码的维护趋势状况,以对所述目标源程序代码进行及时修复。
优选地,所述展示模块35用于:根据每个代码评价指标的评分,筛选出评分低于阈值的目标代码评价指标,并获取所述目标代码评价指标的子指标,根据目标代码评价指标的子指标对应的规范内容,显示所述所述目标源程序代码的修复建议。
本发明对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据,将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别,根据每个子指标对应的数据,确定每个子指标的评分,计算每个子指标对应的权重,基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。本发明能从多个层次指标上评价代码质量,对代码质量进行定性与定量分析,并能根据评价结果,提出修复建议,从而提高代码的维护效率。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明每个实施例所述方法的部分步骤。
如图4所示,所述电子设备4包括至少一个发送装置41、至少一个存储器42、至少一个处理器43、至少一个接收装置44以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。
所述电子设备4是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述电子设备4还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
所述电子设备4可以是,但不限于任何一种可与用户通过键盘、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、个人数字助理(PersonalDigital Assistant,PDA)、智能式穿戴式设备、摄像设备、监控设备等终端。
所述电子设备4所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
其中,所述接收装置44和所述发送装置41可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。
所述存储器42用于存储程序代码。所述存储器42可以是集成电路中没有实物形式的具有存储功能的电路,如RAM(Random-Access Memory,随机存取存储器)、FIFO(First InFirst Out,)等。或者,所述存储器42也可以是具有实物形式的存储器,如内存条、TF卡(Trans-flash Card)、智能媒体卡(smart media card)、安全数字卡(secure digitalcard)、快闪存储器卡(flash card)等储存设备等等。
所述处理器43可以包括一个或者多个微处理器、数字处理器。所述处理器43可调用存储器42中存储的程序代码以执行相关的功能。例如,图3中所述的各个模块是存储在所述存储器42中的程序代码,并由所述处理器43所执行,以实现一种代码质量监控方法。所述处理器43又称中央处理器(CPU,Central Processing Unit),是一块超大规模的集成电路,是运算核心(Core)和控制核心(Control Unit)。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令当被包括一个或多个处理器的代码质量监控装置执行时,使代码质量监控装置执行如上文方法实施例所述的代码质量监控方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明的各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种代码质量监控方法,其特征在于,所述方法包括:
对目标源程序代码进行扫描,并提取与编码规范条件不匹配的数据;
将提取的数据分类到配置的多个代码评价指标对应的子指标的类别中,确定每个子指标对应的数据,其中每个代码评价指标对应至少一个子指标,每个子指标属于一个类别;
根据每个子指标对应的数据,确定每个子指标的评分;
计算每个子指标对应的权重;
基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告。
2.如权利要求1所述的代码质量监控方法,其特征在于,所述提取与编码规范条件不匹配的数据包括以下一种或者多种的组合:
提取与配置的编码语法不匹配的代码数据;
提取冗余代码数据;
提取调用文件大小超过阈值的代码。
3.如权利要求1所述的代码质量监控方法,其特征在于,所述多个代码评价指标包括以下一种或者多种指标的组合:命名指标、布局指标、结构指标、冗余代码指标、文件大小指标。
4.如权利要求1所述的代码质量监控方法,其特征在于,所述根据每个子指标对应的数据,确定每个子指标的评分包括:
获取每个子指标对应的专家评分;
根据每个子指标对应的数据,确定每个子指标对应的缺陷数量;
将每个子指标对应的缺陷数量与每个子指标对应的专家评分的乘积作为每个子指标的扣分,并将每个子指标的总分减去每个子指标的扣分作为每个子指标的评分。
5.如权利要求1所述的代码质量监控方法,其特征在于,所述计算每个子指标对应的权重包括:
计算每个代码评价指标相对于代码评价指标体系的权重;
计算每个子指标相对于每个代码评价指标的权重;
基于每个代码评价指标相对于代码评价指标体系的权重及每个子指标相对于每个代码评价指标的权重进行加权和,确定每个子指标对应的权重。
6.如权利要求1所述的代码质量监控方法,其特征在于,所述基于每个子指标的评分及每个子指标对应的权重,对所述目标源程序代码的质量进行分析,输出所述目标源程序代码的质量评价报告包括以下一种或者多种的组合:
基于每个子指标的评分及每个子指标对应的权重,计算所述目标源程序代码的总评分,并展示在所述质量评价报告;
基于每个代码评价指标包含的每个子指标的评分及权重,计算每个代码评价指标的评分,基于每个代码评价指标的评分,在所述质量评价报告中显示每个代码评价指标的质量。
7.如权利要求1所述的代码质量监控方法,其特征在于,所述方法还包括:
定期对所述目标源程序代码进行评价,并将每次评价的结果与历史评价结果进行比较,输出比较结果。
8.如权利要求1所述的代码质量监控方法,其特征在于,所述方法还包括:根据每个代码评价指标的评分,筛选出评分低于阈值的目标代码评价指标,并获取所述目标代码评价指标对应的子指标,根据目标代码评价指标对应的的子指标对应的规范内容,显示所述目标源程序代码的修复建议。
9.一种电子设备,其特征在于,所述电子设备包括存储器及处理器,所述存储器用于存储至少一个指令,所述处理器用于执行所述至少一个指令以实现如权利要求1至8中所述代码质量监控方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现如权利要求1至8中任一项所述代码质量监控方法。
CN201810576023.5A 2018-06-06 2018-06-06 代码质量监控方法、设备及存储介质 Pending CN108804323A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810576023.5A CN108804323A (zh) 2018-06-06 2018-06-06 代码质量监控方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810576023.5A CN108804323A (zh) 2018-06-06 2018-06-06 代码质量监控方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN108804323A true CN108804323A (zh) 2018-11-13

Family

ID=64087285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810576023.5A Pending CN108804323A (zh) 2018-06-06 2018-06-06 代码质量监控方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN108804323A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096430A (zh) * 2019-03-16 2019-08-06 平安证券股份有限公司 第三方sdk准入测试方法、装置、终端及存储介质
CN110096868A (zh) * 2019-04-28 2019-08-06 深圳前海微众银行股份有限公司 操作代码的审计方法、装置、设备及计算机可读存储介质
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备
CN110377497A (zh) * 2019-05-27 2019-10-25 深圳壹账通智能科技有限公司 代码检测方法、装置、计算机装置及存储介质
CN111382443A (zh) * 2018-12-29 2020-07-07 北京奇虎科技有限公司 代码质量提升建议的确定方法、装置及电子设备
CN112000573A (zh) * 2020-08-17 2020-11-27 苏州达家迎信息技术有限公司 代码质量的监控方法、装置、计算机设备及介质
CN112417852A (zh) * 2020-12-07 2021-02-26 中山大学 一种代码片段重要性的判断方法和装置
CN112799712A (zh) * 2021-01-29 2021-05-14 中国工商银行股份有限公司 维护工作量的确定方法、装置、设备、介质和程序产品
CN113254837A (zh) * 2021-06-17 2021-08-13 北京智胜新格科技有限公司 应用程序评估方法、装置、系统、设备和介质
CN114392560A (zh) * 2021-11-08 2022-04-26 腾讯科技(深圳)有限公司 虚拟场景的运行数据处理方法、装置、设备及存储介质
US11334351B1 (en) 2020-04-28 2022-05-17 Allstate Insurance Company Systems and methods for software quality prediction
CN110096868B (zh) * 2019-04-28 2024-07-02 深圳前海微众银行股份有限公司 操作代码的审计方法、装置、设备及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
CN102137115A (zh) * 2011-04-22 2011-07-27 南京邮电大学 通信网恶意代码攻击效果评估方法
US20110271259A1 (en) * 2010-04-30 2011-11-03 Cray Inc. Systems and methods for debugging applications using dual code generation
CN106126412A (zh) * 2016-06-14 2016-11-16 中国科学院软件研究所 基于安卓api使用规范的代码质量自动评估优化方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261604A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 一种软件质量评价装置及软件质量评价的定量分析方法
US20110271259A1 (en) * 2010-04-30 2011-11-03 Cray Inc. Systems and methods for debugging applications using dual code generation
CN102137115A (zh) * 2011-04-22 2011-07-27 南京邮电大学 通信网恶意代码攻击效果评估方法
CN106126412A (zh) * 2016-06-14 2016-11-16 中国科学院软件研究所 基于安卓api使用规范的代码质量自动评估优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王盛滨: ""软件编码规范评价指标体系构建研究"", 《万方数据硕士学位论文》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382443A (zh) * 2018-12-29 2020-07-07 北京奇虎科技有限公司 代码质量提升建议的确定方法、装置及电子设备
CN110096430A (zh) * 2019-03-16 2019-08-06 平安证券股份有限公司 第三方sdk准入测试方法、装置、终端及存储介质
CN110096868A (zh) * 2019-04-28 2019-08-06 深圳前海微众银行股份有限公司 操作代码的审计方法、装置、设备及计算机可读存储介质
CN110096868B (zh) * 2019-04-28 2024-07-02 深圳前海微众银行股份有限公司 操作代码的审计方法、装置、设备及计算机可读存储介质
CN110297656B (zh) * 2019-05-23 2024-01-26 天航长鹰(江苏)科技有限公司 基于配置模型评审代码的方法、装置及计算机设备
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备
CN110377497A (zh) * 2019-05-27 2019-10-25 深圳壹账通智能科技有限公司 代码检测方法、装置、计算机装置及存储介质
US11334351B1 (en) 2020-04-28 2022-05-17 Allstate Insurance Company Systems and methods for software quality prediction
US11893387B2 (en) 2020-04-28 2024-02-06 Allstate Insurance Company Systems and methods for software quality prediction
CN112000573A (zh) * 2020-08-17 2020-11-27 苏州达家迎信息技术有限公司 代码质量的监控方法、装置、计算机设备及介质
CN112000573B (zh) * 2020-08-17 2022-10-28 苏州达家迎信息技术有限公司 代码质量的监控方法、装置、计算机设备及介质
CN112417852A (zh) * 2020-12-07 2021-02-26 中山大学 一种代码片段重要性的判断方法和装置
CN112799712A (zh) * 2021-01-29 2021-05-14 中国工商银行股份有限公司 维护工作量的确定方法、装置、设备、介质和程序产品
CN112799712B (zh) * 2021-01-29 2024-02-02 中国工商银行股份有限公司 维护工作量的确定方法、装置、设备、介质
CN113254837A (zh) * 2021-06-17 2021-08-13 北京智胜新格科技有限公司 应用程序评估方法、装置、系统、设备和介质
CN114392560A (zh) * 2021-11-08 2022-04-26 腾讯科技(深圳)有限公司 虚拟场景的运行数据处理方法、装置、设备及存储介质
CN114392560B (zh) * 2021-11-08 2024-06-04 腾讯科技(深圳)有限公司 虚拟场景的运行数据处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN108804323A (zh) 代码质量监控方法、设备及存储介质
CN110516910A (zh) 基于大数据的保单核保模型训练方法和核保风险评估方法
CN107688591B (zh) 一种精算处理方法和装置
CN109710926B (zh) 电网调度专业语言语义关系抽取方法、装置及电子设备
CN105989155A (zh) 识别风险行为的方法及装置
CN110119745A (zh) 深度学习模型的压缩方法、装置、计算机设备及存储介质
CN108346036A (zh) 保险保单集中核单方法、电子装置及可读存储介质
CN104915334A (zh) 一种基于语义分析的招投标项目关键信息自动化提取方法
CN107291672A (zh) 数据表的处理方法和装置
CN109241068A (zh) 前后台数据比对的方法、装置及终端设备
CN105574544A (zh) 一种数据处理方法和装置
CN107895311A (zh) 一种订单匹配分发的方法和装置
CN110874744B (zh) 一种数据异常检测方法及装置
CN107908796A (zh) 电子政务查重方法、装置以及计算机可读存储介质
CN205845090U (zh) 电力市场主体信用评价系统
CN109324960A (zh) 基于大数据分析的自动测试方法及终端设备
CN110135701A (zh) 控制规则的自动生成方法、装置、电子设备及可读介质
CN112883730A (zh) 相似文本匹配方法、装置、电子设备及存储介质
CN114519613B (zh) 价格数据的处理方法和装置、电子设备、存储介质
US8639695B1 (en) System, method and computer program for analysing and visualising data
CN113656690B (zh) 产品推荐方法、装置、电子设备及可读存储介质
CN113505273B (zh) 基于重复数据筛选的数据排序方法、装置、设备及介质
CN111143394A (zh) 知识数据处理方法、装置、介质及电子设备
CN113378231A (zh) 一种大数据应用开放平台的隐私计算方法及应用
CN115841334A (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: 20181113

RJ01 Rejection of invention patent application after publication