CN111930627A - Egl编程语言的代码覆盖率确定方法及装置 - Google Patents

Egl编程语言的代码覆盖率确定方法及装置 Download PDF

Info

Publication number
CN111930627A
CN111930627A CN202010808676.9A CN202010808676A CN111930627A CN 111930627 A CN111930627 A CN 111930627A CN 202010808676 A CN202010808676 A CN 202010808676A CN 111930627 A CN111930627 A CN 111930627A
Authority
CN
China
Prior art keywords
egl
code
coverage rate
information
position 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.)
Granted
Application number
CN202010808676.9A
Other languages
English (en)
Other versions
CN111930627B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010808676.9A priority Critical patent/CN111930627B/zh
Publication of CN111930627A publication Critical patent/CN111930627A/zh
Application granted granted Critical
Publication of CN111930627B publication Critical patent/CN111930627B/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种EGL编程语言的代码覆盖率确定方法及装置,方法包括:从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;根据覆盖率统计维度配置信息对EGL代码进行遍历处理,确定匹配覆盖率统计维度配置信息的桩位信息;运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。实现对EGL编程语言的代码覆盖率统计,支持用户自定义的特殊覆盖统计维度,以便基于EGL编程语言的软件工程更好的了解测试覆盖情况,发现测试死角、冗余代码、历史废弃代码,度量自动化用例等,帮助提升软件工程质量。本发明用于金融领域或其他领域,用于金融领域的EGL编程语言的代码覆盖率确定。

Description

EGL编程语言的代码覆盖率确定方法及装置
技术领域
本发明涉及软件技术,具体的讲是一种EGL编程语言的代码覆盖率确定方法及装置。
背景技术
目前,随着信息技术的飞速发展和广泛运用,软件工程质量显得更加重要。度量软件工程质量的手段中,软件工程的代码覆盖率是其中一项重要指标。
针对目前广泛使用的Java编程语言,业界早已出现一些针对性的代码测试覆盖率统计工具,如JaCoCo、Emma等。EGL(Enterprise Generation Language)是IBM致力推广的业务编程语言,但针对EGL编程语言,目前却没有相关代码覆盖率统计的工具、系统或方法。
发明内容
为解决现有技术中,针对EGL编程语言,没有相关代码覆盖率统计的工具或方法,本发明提供了一种EGL编程语言的代码覆盖率确定方法,包括:
从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
根据所述桩位信息对EGL代码进行插桩处理;
运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
本发明实施例中,所述的预先建立的覆盖率统计维度配置文件为覆盖率统计维度配置表;配置表选项包括:覆盖率统计维度、统计目标描述、基于Java的正则表达式及是否启用。
本发明实施例中,所述的根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息包括:
对EGL代码进行去注释处理;
循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
本发明实施例中,所述的桩位信息包括:覆盖率统计维度、统计目标描述、桩位位置下标及代码行号。
本发明实施例中,所述的根据所述桩位信息对EGL代码进行插桩处理包括:
根据所述的桩位信息按覆盖率统计维度进行数据统计确定统计的桩位信息数组;其中,统计的桩位信息数组包括:覆盖率统计维度、统计目标描述及桩位数量需信息;
根据所述的桩位信息按桩位下标进行排序确定排序的桩位信息数组;其中,排序的桩位信息数组包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
对所述统计的桩位信息数组、排序的桩位信息数组及去注释的EGL代码进行对照读处理,生成插桩处理后的EGL代码。
本发明实施例中,所述的运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率包括:
根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;
根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息;
根据运行的EGL代码中的桩位明细信息、桩位统计信息确定代码覆盖率。
同时,本发明还提供一种EGL编程语言的代码覆盖率确定装置,所述的装置包括:
维度配置模块,用于从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
桩位信息确定模块,用于根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
插桩模块,用于根据所述桩位信息对EGL代码进行插桩处理;
覆盖率确定模块,用于运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
本发明实施例中,所述的桩位信息确定模块包括:
去注释单元,用于对EGL代码进行去注释处理;
遍历匹配单元,用于循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
本发明实施例中,所述的桩位信息包括:覆盖率统计维度、统计目标描述、桩位位置下标及代码行号。
本发明实施例中,所述的插桩模块包括:
统计单元,用于根据所述的桩位信息按覆盖率统计维度进行数据统计确定统计的桩位信息数组;其中,统计的桩位信息数组包括:覆盖率统计维度、统计目标描述及桩位数量需信息;
排序单元,用于根据所述的桩位信息按桩位下标进行排序确定排序的桩位信息数组;其中,排序的桩位信息数组包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
照读插桩单元,用于对所述统计的桩位信息数组、排序的桩位信息数组及去注释的EGL代码进行对照读处理,生成插桩处理后的EGL代码。
本发明实施例中,所述的覆盖率确定模块包括:
桩位明细信息确定单元,用于根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;
桩位统计信息确定单元,用于根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息;
覆盖率确定单元,用于根据运行的EGL代码中的桩位明细信息、桩位统计信息确定代码覆盖率。
同时,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法。
同时,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有执行上述方法的计算机程序。
本发明提供一种针对EGL编程语言的代码覆盖率统计方法及装置,提供基本的语句覆盖、判定覆盖、条件覆盖等统计维度方案,特别的提供了支持用户自定义的特殊覆盖统计维度,以便基于EGL编程语言的软件工程更好的了解测试覆盖情况,发现测试死角、冗余代码、历史废弃代码,度量自动化用例等,帮助提升软件工程质量。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的EGL编程语言的代码覆盖率确定方法流程图;
图2为本实施例中提供的实现EGL编程语言的代码覆盖率确定方法的系统示意图;
图3为本实施例中的异步表处理构件逻辑示意图;
图4为本实施例中EGL源代码加工处理流程图;
图5为本发明提供的EGL编程语言的代码覆盖率确定装置的框图;
图6为本实施例中提供的电子设备实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本实施例提供的EGL编程语言的代码覆盖率确定方法,其包括:
步骤S101,从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
步骤S102,根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
步骤S103,根据所述桩位信息对EGL代码进行插桩处理;
步骤S104,运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
本发明解决了EGL编程语言的代码覆盖率统计领域技术性空白的问题,提供了一种灵活的、可支持用户自定义特殊覆盖维度的EGL编程语言的代码覆盖率统计方法,用户自定义特殊覆盖维度涵盖语句覆盖、判定覆盖、条件覆盖、自定义覆盖等统计维度方案,以便基于EGL编程语言的软件工程更好的了解测试覆盖情况,发现测试死角、冗余代码、历史废弃代码,度量自动化用例等,帮助提升软件工程质量。
本发明实施例中,所述的预先建立的覆盖率统计维度配置文件为覆盖率统计维度配置表;配置表选项包括:覆盖率统计维度、统计目标描述、基于Java的正则表达式及是否启用。
本发明实施例中,根据需要进行覆盖率统计维度配置,利用覆盖率统计维度配置表支持用户自定义配置。本发明提供了几种常规覆盖率统计维度,可在配置表中“是否启用”列选择“是”或“否”选项进行配置,确定进行覆盖率统计的维度。
用户自定义配置的覆盖率统计维度,可在配置表中进行配置,配置项包括:是否启用、正则表达式、覆盖率统计维度、统计目标描述等。
本实施例提供一种针对EGL编程语言的代码覆盖率统计方法,特别是一种基于Java正则表达式遍历匹配实现的,可支持用户自定义特殊覆盖维度的,对EGL编程语言的代码覆盖率统计方法。
本实施例提供的方法的核心思路是:创建覆盖率统计相关数据库表,编写工具实现对目标EGL源代码进行语法分析,结合由用户自定义配置的覆盖率统计维度,对覆盖率统计对象代码行进行“插桩”处理,最终使“插桩”后的EGL源代码部署运行时,实现EGL代码的覆盖率的统计分析。
下面结合具体的实施例对本发明技术方案进行具体说明:
本实施例中,实现代码覆盖率统计主要包括如下部分:
一、准备工作;
二、EGL代码加工、部署及执行;
三、覆盖率统计。
如图2所示,本实施例中,利用图2所示的系统示意图实现本实施例的代码覆盖率统计。
EGL源代码文件服务器将EGL源代码送入EGL源代码加工处理服务器进行处理;
EGL源代码加工处理服务器对EGL源代码进行加工处理;
加工完成的EGL源代码写回EGL源代码文件服务器;
加工完成的EGL源代码部署到EGL代码运行的服务器/主机中,形成程序实体;
程序实体运行时,插桩代码的执行调用异步表处理构件,进行数据库数据写入操作;
通过查询数据库中插桩信息数据,即可进行覆盖率统计计算。
本实施例具体步骤如下:
一、准备工作:
步骤101:部署相关覆盖率统计数据表;
其中,相关覆盖率统计数据表包括:
桩位信息统计表(本发明中命名为STATISTB)、桩位执行明细表(本发明中命名为DETAILTB);其建表语句需预先在目标数据库中执行,以便提前创建好数据表,便于后续使用。
本实施例中,只列举关键字段,其它实施例总更多的还可包括:版本名、开发流、代码工程名等。字段数据类型按实际需求进行合理定义:
本实施例中,桩位信息统计表及桩位执行明细表的结构设计分别如下表1、表2所示;
表1
Figure BDA0002630110840000061
表2
Figure BDA0002630110840000062
Figure BDA0002630110840000071
即本实施例中,利用预先建立的桩位执行明细表DETAILTB,根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;利用桩位信息统计表STATISTB,根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息。
步骤102:编写和部署异步表处理构件;
预先编写支持异步调用的、针对桩位信息统计表STATISTB、桩位执行明细表DETAILTB的变更构件,本实施例中称为异步表处理构件,并将异步表处理构件提前部署到目标环境中。
本实施例中,异步表处理构件的处理逻辑为:
1、接收调用方送入的桩位信息:程序名、覆盖率统计维度、统计目标描述、桩位数量、桩位位置下标、代码行号。
2、判断调用方送入的桩位信息进行桩位信息统计表STATISTB或桩位执行明细表DETAILTB的变更处理。
如图3所示,为本实施例中异步表处理构件逻辑示意图。
实际运用场景中,调用方送入的数值将有两种情况:
(1)送入:程序名、覆盖率统计维度、统计目标描述、桩位数量。
该场景用于插入桩位信息统计表STATISTB数据;
(2)送入:程序名、覆盖率统计维度、统计目标描述、桩位位置下标、代码行号。
该场景用于插入桩位执行明细表DETAILTB数据。
即本实施例中,利用构建的异步表处理构件,利用预先建立的桩位执行明细表DETAILTB,根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;利用桩位信息统计表STATISTB,根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息。
步骤103:自定义配置覆盖率统计维度;
本实施例提供的覆盖率统计方法,能够实现覆盖率统计维度配置,支持用户自定义配置。
覆盖率统计维度包括:语句覆盖、IF判定、ELSE判定、WHEN条件、WHILE循环及FOR循环,同时也可以包括用户自定义的函数ABC的调用及使用MathLib函数库的代码。
1、本发明提供了几种常规覆盖率统计维度,可在配置表中“是否启用”列选择“是”或“否”选项进行配置
2、用户自定义配置的覆盖率统计维度,可在配置表中进行配置,配置项包括:是否启用、正则表达式、覆盖率统计维度、统计目标描述等。
覆盖率统计维度配置文件格式和举例如下表3所示:
表3
Figure BDA0002630110840000081
步骤104:编写EGL源代码加工处理工具;
本步骤实现提供基于Java编写EGL源代码加工处理工具。
该工具核心是运用正则表达式遍历匹配,分析得到桩位信息,并将代码进行插桩处理。
本实施例中,编写EGL源代码加工处理工具,对代码进行插桩处理,如图4所示,主要处理逻辑步骤为:
1、读取步骤103中建立的覆盖率统计维度配置文件,将配置内容存入统计维度配置数组中;
2、打开EGL源代码文件,读取目标EGL源代码内容并将其写入源代码字符串对象中;
3、利用EGL注释语句的语法规则,结合正则表达式遍历匹配处理,对上述源代码字符串对象内容进行去注释语句的操作,生成去注释的源代码字符串。
其中,对于整行代码均为注释语句的情况,需补充换行符,使得处理后的代码行数保持不变;
4、循环访问上述统计维度配置数组,结合正则表达式遍历匹配处理,依次将每一个统计维度配置对去注释的源代码字符串进行遍历匹配,找出所有匹配到的位置(即为桩位)信息,记录到桩位信息数组中。
循环处理结束,则桩位信息数组记录了该EGL代码所有已配置的统计维度分析结果信息,信息包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号等;
通过上述步骤实现,对EGL代码进行去注释处理;循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
5、针对上述桩位信息数组进行数据统计和排序。其中,
统计主要是按覆盖率统计维度汇总统计各维度的桩位总数,形成统计的桩位信息数组,其包含:覆盖率统计维度、统计目标描述、桩位数量信息;
排序主要是按桩位位置下标对数组进行排序,形成排序的桩位信息数组,包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
6、将上述统计的桩位信息数组、排序的桩位信息数组和去注释的源代码字符串进行对照读处理,生成插桩的源代码字符串。
通过排序的桩位信息数组获取的桩位下标信息,可以对去注释的源代码字符串进行代码分段,写入插桩的源代码字符串;
通过排序的桩位信息数组获取的桩位信息,可以组装步骤102所述异步表处理构件处理桩位执行明细表DETAILTB数据插入场景的调用代码,作为插桩的代码写入插桩的源代码字符串;
特别的,通过统计的桩位信息数组获取的桩位信息,可以组装步骤102所述异步表处理构件处理桩位信息统计表STATISTB数据插入场景的调用代码,作为插桩的代码写入插桩的源代码字符串特定main函数中;
7、将插桩的源代码字符串反写回目标EGL源代码文件中,替换EGL源代码文件内容。
本实施例中,对上述工具按统计维度配置结合正则表达式遍历匹配处理的处理过程如下:
基于Java编程,结合Pattern类(java.util.regex.Pattern)、Matcher类(java.util.regex.Matcher)做正则表达式遍历匹配,结合EGL特有的语法和保留字,可实现灵活的用户自定义配置的覆盖率统计维度语义分析。
本实施例中,正则表达式遍历匹配,主要使用Pattern类对象的complie(Stringregex,int flags)方法按给定的正则表达式参数regex,结合flag参数指定编译模式并赋予Pattern类对象后,创建Matcher类对象关联Pattern类对象的matcher(StringcodeString),循环判断Matcher类对象的find()结果并对查找的内容进行分析加工,完成按指定匹配逻辑对源代码字符串进行遍历检索。
本发明涉及的语法分析包括但不限于如下几种:
1、“语句”识别:
核心思路:EGL代码以“;”作为语句分割符,可用如下语法表达,识别一条语句:
;非贪婪匹配任意字符;
Java正则表达式表示为:";.*?;"
2、“判定语句”识别:
核心思路:EGL代码以“IF”、“ELSE”作为判定语句的保留字,可用如下语法表达,识别判定语句:
单词边界IF单词边界和单词边界ELSE单词边界
Java正则表达式表示为:"\b IF\b"和"\b ELSE\b"
3、“条件语句”识别:
核心思路:EGL代码以“WHEN”作为条件语句的保留字,可用如下语法表达,识别条件语句:
单词边界WHEN单词边界贪婪匹配零个或多个空白字符(贪婪匹配任意非左右括号字符)
Java正则表达式表示为:"\b WHEN\b\s*\(([^()])*\)"
4、“循环语句”识别:
核心思路:EGL代码以“FOR”、“WHILE”作为循环语句的保留字,可用如下语法表达,识别循环语句:
单词边界FOR贪婪匹配零个或多个空白字符(
和单词边界WHILE贪婪匹配零个或多个空白字符(
Java正则表达式表示为:"\b FOR\s*\("和"\b WHILE\s*\("
二、EGL代码加工、部署、执行:
运用本发明方案进行EGL覆盖率统计处理时,需将EGL源代码文件进行加工处理后,方可进行部署和执行。步骤简述如下:
步骤201:加工:
目标EGL源代码在部署之前,需使用步骤104所确定的EGL源代码加工处理工具进行处理,为EGL源代码文件进行插桩加工处理;
步骤202:部署:
上述插桩加工处理后的EGL源代码文件按原有流程进行部署。部署后,环境中存在可执行的EGL程序实体;
步骤203:执行
上述EGL程序实体运行时,程序代码执行链路上的插桩代码将被执行,调用异步表处理构件进行覆盖率统计相关表的数据插入处理。
其中,EGL程序实体main函数中的“插桩”代码会将该程序已统计的桩位信息插入到桩位信息统计表STATISTB中,该部分数据将在后续覆盖率统计处理时作为覆盖率统计的分母使用;
EGL程序实体其他位置的“插桩”代码会将相应的桩位信息明细插入到桩位执行明细表DETAILTB中,该部分数据将在后续覆盖率统计处理时作为覆盖率统计的分子使用。
三、覆盖率统计:
经过上述加工后EGL代码的部署执行,步骤101所述桩位信息统计表STATISTB、桩位执行明细表DETAILTB将会插入相关代码覆盖执行数据。
根据前述的分子、分母数据确定代码覆盖率。本实施例中,通过编写SQL语句对桩位信息统计表STATISTB、桩位执行明细表DETAILTB进行联表查询,可获取目标EGL程序的覆盖率情况。
比如:某个程序(如A程序)全部维度覆盖率情况
SELECT STAT.程序名,
STAT.覆盖率统计维度,
STAT.统计目标描述,
STAT.执行日期,
COUNT(DETL.桩位位置下标)/STAT.桩位数量AS覆盖率
FROM STATISTB STAT,DETAILTB DETL
WHERE STAT.程序名=DETL.程序名
AND STAT.覆盖率统计维度=DETL.覆盖率统计维度
AND STAT.统计目标描述=DETL.统计目标描述
AND STAT.执行日期=DETL.执行日期
GROUP BY STAT.程序名,STAT.覆盖率统计维度,STAT.统计目标描述,STAT.执行日期,STAT.桩位数量;
本发明解决了EGL编程语言的代码覆盖率统计领域技术性空白的问题,提供了一种灵活的、可支持用户自定义特殊覆盖维度的EGL编程语言的代码覆盖率统计系统及方法,涵盖语句覆盖、判定覆盖、条件覆盖、自定义覆盖等统计维度方案,以便基于EGL编程语言的软件工程更好的了解测试覆盖情况,发现测试死角、冗余代码、历史废弃代码,度量自动化用例等,帮助提升软件工程质量。
同时,本发明还提供一种EGL编程语言的代码覆盖率确定装置,如图5所示,该装置包括:
维度配置模块501,用于从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
桩位信息确定模块502,用于根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
插桩模块503,用于根据所述桩位信息对EGL代码进行插桩处理;
覆盖率确定模块504,用于运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
本发明实施例中,所述的桩位信息确定模块包括:
去注释单元,用于对EGL代码进行去注释处理;
遍历匹配单元,用于循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
本发明实施例中,所述的桩位信息包括:覆盖率统计维度、统计目标描述、桩位位置下标及代码行号。
本发明实施例中,所述的插桩模块包括:
统计单元,用于根据所述的桩位信息按覆盖率统计维度进行数据统计确定统计的桩位信息数组;其中,统计的桩位信息数组包括:覆盖率统计维度、统计目标描述及桩位数量需信息;
排序单元,用于根据所述的桩位信息按桩位下标进行排序确定排序的桩位信息数组;其中,排序的桩位信息数组包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
照读插桩单元,用于对所述统计的桩位信息数组、排序的桩位信息数组及去注释的EGL代码进行对照读处理,生成插桩处理后的EGL代码。
本发明实施例中,所述的覆盖率确定模块包括:
桩位明细信息确定单元,用于根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;
桩位统计信息确定单元,用于根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息;
覆盖率确定单元,用于根据运行的EGL代码中的桩位明细信息、桩位统计信息确定代码覆盖率。
对本领域技术人员而言,通过前述的实施例的描述,可清楚获知本申请的EGL编程语言的代码覆盖率确定装置的实现方式,在本实施例中,该EGL编程语言的代码覆盖率确定装置可以参照前述的实施例部分的描述,其内容被合并于此,重复之处不再赘述。
需要说明的是,本公开EGL编程语言的代码覆盖率确定方法和装置可用于金融领域在EGL编程语言的代码覆盖率确定,也可用于除金融领域之外的任意领域实现EGL编程语言的代码覆盖率统计确定,本公开的EGL编程语言的代码覆盖率确定方法和装置的应用领域不做限定。
本实施例还提供一种电子设备,该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照前述方法及装置的实施例,其内容被合并于此,重复之处不再赘述。
图6为本发明实施例的电子设备600的系统构成的示意框图。如图6所示,该电子设备600可以包括中央处理器100和存储器140;存储器140耦合到中央处理器100。值得注意的是,该图是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,EGL编程语言的代码覆盖率确定功能可以被集成到中央处理器100中。其中,中央处理器100可以被配置为进行如下控制:
从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
根据所述桩位信息对EGL代码进行插桩处理;
运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
如图6所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图6中所示的所有部件;此外,电子设备600还可以包括图6中没有示出的部件,可以参考现有技术。
如图6所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本发明实施例还提供一种计算机可读程序,其中当在电子设备中执行所述程序时,所述程序使得计算机在所述电子设备中执行如上面实施例所述的EGL编程语言的代码覆盖率确定方法。
本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在电子设备中执行上面实施例所述的EGL编程语言的代码覆盖率统计。
以上参照附图描述了本发明的优选实施方式。这些实施方式的许多特征和优点根据该详细的说明书是清楚的,因此所附权利要求旨在覆盖这些实施方式的落入其真实精神和范围内的所有这些特征和优点。此外,由于本领域的技术人员容易想到很多修改和改变,因此不是要将本发明的实施方式限于所例示和描述的精确结构和操作,而是可以涵盖落入其范围内的所有合适修改和等同物。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种EGL编程语言的代码覆盖率确定方法,其特征在于,所述的方法包括:
从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
根据所述桩位信息对EGL代码进行插桩处理;
运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
2.如权利要求1所述的EGL编程语言的代码覆盖率确定方法,其特征在于,
所述的预先建立的覆盖率统计维度配置文件为覆盖率统计维度配置表;配置表选项包括:覆盖率统计维度、统计目标描述、基于Java的正则表达式及是否启用。
3.如权利要求1所述的EGL编程语言的代码覆盖率确定方法,其特征在于,所述的根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息包括:
对EGL代码进行去注释处理;
循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
4.如权利要求3所述的EGL编程语言的代码覆盖率确定方法,其特征在于,所述的桩位信息包括:覆盖率统计维度、统计目标描述、桩位位置下标及代码行号。
5.如权利要求4所述的EGL编程语言的代码覆盖率确定方法,其特征在于,所述的根据所述桩位信息对EGL代码进行插桩处理包括:
根据所述的桩位信息按覆盖率统计维度进行数据统计确定统计的桩位信息数组;其中,统计的桩位信息数组包括:覆盖率统计维度、统计目标描述及桩位数量需信息;
根据所述的桩位信息按桩位下标进行排序确定排序的桩位信息数组;其中,排序的桩位信息数组包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
对所述统计的桩位信息数组、排序的桩位信息数组及去注释的EGL代码进行对照读处理,生成插桩处理后的EGL代码。
6.如权利要求5所述的EGL编程语言的代码覆盖率确定方法,其特征在于,所述的运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率包括:
根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;
根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息;
根据运行的EGL代码中的桩位明细信息、桩位统计信息确定代码覆盖率。
7.一种EGL编程语言的代码覆盖率确定装置,其特征在于,所述的装置包括:
维度配置模块,用于从预先建立的覆盖率统计维度配置文件中获取用户定义的覆盖率统计维度配置信息;
桩位信息确定模块,用于根据所述覆盖率统计维度配置信息对EGL代码进行遍历处理确定匹配所述覆盖率统计维度配置信息的桩位信息;
插桩模块,用于根据所述桩位信息对EGL代码进行插桩处理;
覆盖率确定模块,用于运行插桩处理后的EGL代码,根据EGL代码中的桩位信息确定代码覆盖率。
8.如权利要求7所述的EGL编程语言的代码覆盖率确定装置,其特征在于,
所述的预先建立的覆盖率统计维度配置文件为覆盖率统计维度配置表;配置表选项包括:覆盖率统计维度、统计目标描述、基于Java的正则表达式及是否启用。
9.如权利要求7所述的EGL编程语言的代码覆盖率确定装置,其特征在于,所述的桩位信息确定模块包括:
去注释单元,用于对EGL代码进行去注释处理;
遍历匹配单元,用于循环访问所述覆盖率统计维度配置信息利用正则表达式对去注释的EGL代码进行遍历确定匹配到的桩位信息。
10.如权利要求9所述的EGL编程语言的代码覆盖率确定装置,其特征在于,所述的桩位信息包括:覆盖率统计维度、统计目标描述、桩位位置下标及代码行号。
11.如权利要求10所述的EGL编程语言的代码覆盖率确定装置,其特征在于,所述的插桩模块包括:
统计单元,用于根据所述的桩位信息按覆盖率统计维度进行数据统计确定统计的桩位信息数组;其中,统计的桩位信息数组包括:覆盖率统计维度、统计目标描述及桩位数量需信息;
排序单元,用于根据所述的桩位信息按桩位下标进行排序确定排序的桩位信息数组;其中,排序的桩位信息数组包括:覆盖率统计维度、统计目标描述、桩位位置下标、代码行号信息;
照读插桩单元,用于对所述统计的桩位信息数组、排序的桩位信息数组及去注释的EGL代码进行对照读处理,生成插桩处理后的EGL代码。
12.如权利要求11所述的EGL编程语言的代码覆盖率确定装置,其特征在于,所述的覆盖率确定模块包括:
桩位明细信息确定单元,用于根据排序的桩位信息数组确定运行的EGL代码中的桩位明细信息;
桩位统计信息确定单元,用于根据统计的桩位信息数组确定运行的EGL代码中的桩位统计信息;
覆盖率确定单元,用于根据运行的EGL代码中的桩位明细信息、桩位统计信息确定代码覆盖率。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至6中任一项所述方法的计算机程序。
CN202010808676.9A 2020-08-12 2020-08-12 Egl编程语言的代码覆盖率确定方法及装置 Active CN111930627B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010808676.9A CN111930627B (zh) 2020-08-12 2020-08-12 Egl编程语言的代码覆盖率确定方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010808676.9A CN111930627B (zh) 2020-08-12 2020-08-12 Egl编程语言的代码覆盖率确定方法及装置

Publications (2)

Publication Number Publication Date
CN111930627A true CN111930627A (zh) 2020-11-13
CN111930627B CN111930627B (zh) 2023-09-26

Family

ID=73310816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010808676.9A Active CN111930627B (zh) 2020-08-12 2020-08-12 Egl编程语言的代码覆盖率确定方法及装置

Country Status (1)

Country Link
CN (1) CN111930627B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485908A (zh) * 2021-05-25 2021-10-08 中国人民财产保险股份有限公司 一种覆盖率的获取方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN111045927A (zh) * 2019-11-07 2020-04-21 平安科技(深圳)有限公司 性能测试评估方法、装置、计算机设备及可读存储介质
CN111104319A (zh) * 2019-12-13 2020-05-05 北京同邦卓益科技有限公司 一种代码覆盖率测试方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN111045927A (zh) * 2019-11-07 2020-04-21 平安科技(深圳)有限公司 性能测试评估方法、装置、计算机设备及可读存储介质
CN111104319A (zh) * 2019-12-13 2020-05-05 北京同邦卓益科技有限公司 一种代码覆盖率测试方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485908A (zh) * 2021-05-25 2021-10-08 中国人民财产保险股份有限公司 一种覆盖率的获取方法、装置及电子设备

Also Published As

Publication number Publication date
CN111930627B (zh) 2023-09-26

Similar Documents

Publication Publication Date Title
CN112558980A (zh) 多软件包管理方法及装置
CN108491326B (zh) 测试行为重组方法、装置及存储介质
CN113220782A (zh) 多元测试数据源生成方法、装置、设备及介质
CN112988601A (zh) 测试脚本开发方法及装置
CN111930615B (zh) 代码质量评估方法及装置
CN107145538B (zh) 表格数据查询方法、装置与系统
CN112860264B (zh) 一种抽象语法树重构方法及装置
CN111292721A (zh) 代码编写方法、装置及计算机设备
CN115237805A (zh) 测试案例数据准备方法及装置
CN112860265A (zh) 一种源代码数据库操作异常检测方法及装置
CN113190401A (zh) 快游戏的异常监控方法、电子设备、移动终端以及存储介质
CN111930627B (zh) Egl编程语言的代码覆盖率确定方法及装置
CN112069052A (zh) 一种异常对象检测方法、装置、设备及存储介质
CN113743895A (zh) 一种组件管理方法、装置、计算机设备及存储介质
CN107015955B (zh) 文档编辑方法和装置
CN113326063B (zh) 数据处理方法、电子设备及存储介质
CN102141912B (zh) 一种处理多类引擎Widget的方法及装置
CN113377681A (zh) 测试案例数据处理方法、装置、电子设备及存储介质
CN113419957A (zh) 基于规则的大数据离线批处理性能容量扫描方法及装置
CN109933576B (zh) 音效sdk库建立方法及装置、电子设备和计算机可读介质
CN110865809B (zh) 一种数据导入虚幻引擎的方法和装置
CN105320674B (zh) 一种领域本体库的建立方法、装置及服务器
CN112925564B (zh) 一种源代码的冗余导入类清理方法及装置
CN117850984B (zh) 电子设计自动化脚本预检查方法、系统、设备及存储介质
CN112306499B (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