CN103488460B - 自动标记源代码的系统和方法 - Google Patents

自动标记源代码的系统和方法 Download PDF

Info

Publication number
CN103488460B
CN103488460B CN201310397210.4A CN201310397210A CN103488460B CN 103488460 B CN103488460 B CN 103488460B CN 201310397210 A CN201310397210 A CN 201310397210A CN 103488460 B CN103488460 B CN 103488460B
Authority
CN
China
Prior art keywords
statement
branch
source code
unique identification
loop
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.)
Active
Application number
CN201310397210.4A
Other languages
English (en)
Other versions
CN103488460A (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.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Network 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 Yonyou Network Technology Co Ltd filed Critical Yonyou Network Technology Co Ltd
Priority to CN201310397210.4A priority Critical patent/CN103488460B/zh
Publication of CN103488460A publication Critical patent/CN103488460A/zh
Application granted granted Critical
Publication of CN103488460B publication Critical patent/CN103488460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供了一种自动标记源代码的系统,包括:代码读取单元,用于将任一源文件中的源代码读入字符串变量,并分解为字符串数组;层次确定单元,用于预读多行语句的缩进格式符,确定语句层次;类型判断单元,用于根据起始关键字确定是否为分支/循环语句;语句处理单元,用于在所述分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句;变量保存单元,用于对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。本发明还提出了相应的自动标记源代码的方法。通过本发明的技术方案,可以对源代码中的分支/循环语句进行自动识别,以自动添加唯一标识和注释语句,以减少人工干预,降低处理复杂度。

Description

自动标记源代码的系统和方法
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种自动标记源代码的系统和一种自动标记源代码的方法。
背景技术
黑盒测试是基于软件产品需求和设计规格说明的测试方法,着重于确认和验证软件产品是否满足规格说明。白盒测试是基于源代码逻辑的测试,着眼于确认和验证软件源代码是否符合开发规范、业务逻辑是否满足设计要求,关注源代码业务逻辑中的语句覆盖率和路径覆盖率等。
以上两种测试方法关注的测试对象不同,评价指标不同。长久以来在业界已经分别形成完善的黑盒测试理论方法工具体系和白盒测试理论方法工具体系。两种测试体系相互独立运行互不交流,少有交集。
黑盒测试方法的过程是围绕需求文档设计测试用例,使用方法包括等价类、因果图、错误推测等。评价测试用例设计的方法完全来自对需求文档,业务知识和软件设计说明书的理解程度和使用上述黑盒测试方法设计测试用例的能力。
如果通过在被测试的源代码的每个分支和循环语句中添加输出唯一的分支ID数据到日志的方式,将黑盒测试用例的路径覆盖轨迹记录下来,并用于评估和完善黑盒测试用例设计过程,显然能够使得黑盒测试更加完善和高效。
然而在相关技术中,均是通过程序员在源代码中手工维护分支ID和注释语句等,一方面对于程序员而言,极为耗时费力;另一方面,由于源代码中的分支数量巨大,很容易发生分支ID不唯一、遗漏等情况。
因此,如何高效、准确地为源代码中的每个分支添加相应的唯一ID等信息,从而得到用于完善黑盒测试,使之更为高效,成为目前亟待解决的技术问题。
发明内容
本发明正是基于上述问题,提出了一种自动标记源代码的技术,可以对源代码中的分支/循环语句进行自动识别,以自动添加唯一标识和注释语句,以减少人工干预,降低处理复杂度。
有鉴于此,本发明提出了一种自动标记源代码的系统,包括:代码读取单元,用于将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;层次确定单元,用于预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次;类型判断单元,用于对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,否则判定为顺序执行语句;语句处理单元,用于在所述分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,或将所述顺序执行语句直接保存至所述结果变量;变量保存单元,用于对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
在该技术方案中,通过对选取当前行语句及其后三行语句,使得尽可能地包含一条完整的语句,并且能够通过缩进格式符的比较,确定当前语句在整个源代码结构中的层次,比如处于一层嵌套或两层嵌套等,以便准确地执行语句类型的识别。当然,预读的语句数量也可以由用户根据需要进行修改,以避免在极端情况下,四行语句都无法包含一条完整的语句。
具体地,当一行语句是以分号结尾时,该行语句构成一条完整的语句;当一行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条完整的语句。
通过对完整语句的起始关键字进行识别,比如当起始关键字为“if\elseif\for\foreach\case\do\while”时,即可确定该条语句为分支/循环语句。当确定一条分支/循环语句后,将其分解为条件部分和语句体部分,且语句体部分包含多个分支时,就将其中的每个分支作为一个分支语句,并添加对应的唯一标识和注释语句。
在上述技术方案中,优选地,所述语句处理单元还用于:过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
在上述任一技术方案中,优选地,所述语句处理单元还用于:若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
在该技术方案中,由于在添加唯一标识和注释语句后,原来的单行语句有可能变为多行,因而通过使用“{}”将语句包括起来,避免影响代码的语句层次和结构,使得添加了唯一标识和注释语句的代码,仍然能够有序地执行,不会导致逻辑错误的发生。
在上述任一技术方案中,优选地,所述语句处理单元还用于:根据实时时间,为每个分支生成对应的唯一标识。
在该技术方案中,通过将实时时间用于生成唯一标识,而每个分支的唯一标识是依次生成和添加的,因而确保了不同分支对应的唯一标识不会发生重复。
在上述任一技术方案中,优选地,还包括:信息记录单元,用于将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
在该技术方案中,通过将唯一标识和注释语句的信息和源代码文件的信息记录至分支清单,便于之后执行黑盒测试前,对比新旧两版源代码,并从中提取使用自然语言描述的注释信息,从而使不了解源代码逻辑的人通过变更点所在的分支的注释信息得到源代码业务逻辑变更的信息。
本发明还提出了一种自动标记源代码的方法,包括:步骤202,将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;步骤204,预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次;步骤206,对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,在该分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,若不是,则直接将所述完整语句保存至所述结果变量;步骤208,对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
在该技术方案中,通过对选取当前行语句及其后三行语句,使得尽可能地包含一条完整的语句,并且能够通过缩进格式符的比较,确定当前语句在整个源代码结构中的层次,比如处于一层嵌套或两层嵌套等,以便准确地执行语句类型的识别。当然,预读的语句数量也可以由用户根据需要进行修改,以避免在极端情况下,四行语句都无法包含一条完整的语句。
具体地,当一行语句是以分号结尾时,该行语句构成一条完整的语句;当一行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条完整的语句。
通过对完整语句的起始关键字进行识别,比如当起始关键字为“if\elseif\for\foreach\case\do\while”时,即可确定该条语句为分支/循环语句。当确定一条分支/循环语句后,将其分解为条件部分和语句体部分,且语句体部分包含多个分支时,就将其中的每个分支作为一个分支语句,并添加对应的唯一标识和注释语句。
在上述技术方案中,优选地,所述步骤204之前,还包括:过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
在上述任一技术方案中,优选地,所述步骤206还包括:若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
在该技术方案中,由于在添加唯一标识和注释语句后,原来的单行语句有可能变为多行,因而通过使用“{}”将语句包括起来,避免影响代码的语句层次和结构,使得添加了唯一标识和注释语句的代码,仍然能够有序地执行,不会导致逻辑错误的发生。
在上述任一技术方案中,优选地,所述步骤206包括:根据实时时间,为每个分支生成对应的唯一标识。
在该技术方案中,通过将实时时间用于生成唯一标识,而每个分支的唯一标识是依次生成和添加的,因而确保了不同分支对应的唯一标识不会发生重复。
在上述任一技术方案中,优选地,所述步骤206还包括:将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
在该技术方案中,通过将唯一标识和注释语句的信息和源代码文件的信息记录至分支清单,便于之后执行黑盒测试前,对比新旧两版源代码,并从中提取使用自然语言描述的注释信息,从而使不了解源代码逻辑的人通过变更点所在的分支的注释信息得到源代码业务逻辑变更的信息。
通过以上技术方案,可以对源代码中的分支/循环语句进行自动识别,以自动添加唯一标识和注释语句,以减少人工干预,降低处理复杂度。
附图说明
图1示出了根据本发明的实施例的自动标记源代码的系统的示意框图;
图2示出了根据本发明的实施例的自动标记源代码的方法的流程示意图;
图3示出了根据本发明的实施例的自动对源代码中的分支/循环语句进行标记的具体流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的自动标记源代码的系统的示意框图。
如图1所示,根据本发明的实施例的自动标记源代码的系统100,包括:代码读取单元102,用于将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;层次确定单元104,用于预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次;类型判断单元106,用于对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,否则判定为顺序执行语句;语句处理单元108,用于在所述分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,或将所述顺序执行语句直接保存至所述结果变量;变量保存单元110,用于对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
在该技术方案中,通过对选取当前行语句及其后三行语句,使得尽可能地包含一条完整的语句,并且能够通过缩进格式符的比较,确定当前语句在整个源代码结构中的层次,比如处于一层嵌套或两层嵌套等,以便准确地执行语句类型的识别。当然,预读的语句数量也可以由用户根据需要进行修改,以避免在极端情况下,四行语句都无法包含一条完整的语句。
具体地,当一行语句是以分号结尾时,该行语句构成一条完整的语句;当一行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条完整的语句。
通过对完整语句的起始关键字进行识别,比如当起始关键字为“if\elseif\for\foreach\case\do\while”时,即可确定该条语句为分支/循环语句。当确定一条分支/循环语句后,将其分解为条件部分和语句体部分,且语句体部分包含多个分支时,就将其中的每个分支作为一个分支语句,并添加对应的唯一标识和注释语句。
在上述技术方案中,优选地,所述语句处理单元108还用于:过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
在上述任一技术方案中,优选地,所述语句处理单元108还用于:若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
在该技术方案中,由于在添加唯一标识和注释语句后,原来的单行语句有可能变为多行,因而通过使用“{}”将语句包括起来,避免影响代码的语句层次和结构,使得添加了唯一标识和注释语句的代码,仍然能够有序地执行,不会导致逻辑错误的发生。
在上述任一技术方案中,优选地,所述语句处理单元108还用于:根据实时时间,为每个分支生成对应的唯一标识。
在该技术方案中,通过将实时时间用于生成唯一标识,而每个分支的唯一标识是依次生成和添加的,因而确保了不同分支对应的唯一标识不会发生重复。
在上述任一技术方案中,优选地,还包括:信息记录单元112,用于将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
在该技术方案中,通过将唯一标识和注释语句的信息和源代码文件的信息记录至分支清单,便于之后执行黑盒测试前,对比新旧两版源代码,并从中提取使用自然语言描述的注释信息,从而使不了解源代码逻辑的人通过变更点所在的分支的注释信息得到源代码业务逻辑变更的信息。
图2示出了根据本发明的实施例的自动标记源代码的方法的流程示意图。
如图2所示,根据本发明的实施例的自动标记源代码的方法,包括:步骤202,将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;步骤204,预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次;步骤206,对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,在该分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,若不是,则直接将所述完整语句保存至所述结果变量;步骤208,对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
在该技术方案中,通过对选取当前行语句及其后三行语句,使得尽可能地包含一条完整的语句,并且能够通过缩进格式符的比较,确定当前语句在整个源代码结构中的层次,比如处于一层嵌套或两层嵌套等,以便准确地执行语句类型的识别。当然,预读的语句数量也可以由用户根据需要进行修改,以避免在极端情况下,四行语句都无法包含一条完整的语句。
具体地,当一行语句是以分号结尾时,该行语句构成一条完整的语句;当一行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条完整的语句。
通过对完整语句的起始关键字进行识别,比如当起始关键字为“if\elseif\for\foreach\case\do\while”时,即可确定该条语句为分支/循环语句。当确定一条分支/循环语句后,将其分解为条件部分和语句体部分,且语句体部分包含多个分支时,就将其中的每个分支作为一个分支语句,并添加对应的唯一标识和注释语句。
在上述技术方案中,优选地,所述步骤204之前,还包括:过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
在上述任一技术方案中,优选地,所述步骤206还包括:若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
在该技术方案中,由于在添加唯一标识和注释语句后,原来的单行语句有可能变为多行,因而通过使用“{}”将语句包括起来,避免影响代码的语句层次和结构,使得添加了唯一标识和注释语句的代码,仍然能够有序地执行,不会导致逻辑错误的发生。
在上述任一技术方案中,优选地,所述步骤206包括:根据实时时间,为每个分支生成对应的唯一标识。
在该技术方案中,通过将实时时间用于生成唯一标识,而每个分支的唯一标识是依次生成和添加的,因而确保了不同分支对应的唯一标识不会发生重复。
在上述任一技术方案中,优选地,所述步骤206还包括:将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
在该技术方案中,通过将唯一标识和注释语句的信息和源代码文件的信息记录至分支清单,便于之后执行黑盒测试前,对比新旧两版源代码,并从中提取使用自然语言描述的注释信息,从而使不了解源代码逻辑的人通过变更点所在的分支的注释信息得到源代码业务逻辑变更的信息。
图3示出了根据本发明的实施例的自动对源代码中的分支/循环语句进行标记的具体流程示意图。
如图3所示,根据本发明的实施例的自动对源代码中的分支/循环语句进行标记的具体流程包括:
步骤302,读取源代码,具体是指包含有源代码的源文件。
步骤304,源文件的数量可能为一个或多个,则需要判断当前是否仍存在尚未进行处理的源文件。
步骤306,若存在,则将源文件中的内容保存在字符串变量中,然后按行分解为字符串数组。
步骤308,对得到的字符串数组依次进行处理,若数组结束,则进入步骤328,否则进入步骤310。
步骤310,对需要进行处理的数组对应的源代码进行预处理。具体地,包括:1)过滤掉数组中多余的空行;2)忽略源代码中类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明;3)如果发现当前行中已经有了插入的ID和标准注释语句,那么直接忽略该行。
步骤312,分析语句层级情况。具体地,比如可以通过对当前行的语句,以及该行之后的3行语句(即共4行语句,当然也可以根据实际情况修改为更小或更多行,以避免无法包含一条完整的语句)进行预读,分析这4行代码行前的缩进。由于规范的源代码在不同类型的语句前都会有标准的缩进格式符,比如[Tab]或几个空格;因而通过比较每行语句前的缩进,就可以分析具体的语句层级,比如处于一层嵌套中,或两层嵌套中等,从而避免将不同层级的语句进行同时处理,降低错误发生的可能性。
步骤314,判断语句的类型,比如为分支/循环语句,或是顺序执行语句。
这里的“语句”并不一定为某一行的语句,而是指包含若干行的一条完整的语句。对于某行语句是否完整,可以通过查看其是否以分号结尾来进行判断,若以分号结尾,则该语句完整,否则继续查看下一行,直至找到结尾的分号,则该分号与前一次出现的分号之间的多行语句共同构成了一条完整的语句。
而对于一条语句的类型,可以通过对语句的起始关键字进行获取和判断即可。具体地,如果是以“if\elseif\for\foreach\case\do\while”起始,则确定为分支/循环语句,否则为顺序执行语句。对于顺序执行语句,直接进入步骤316进行处理,否则进入步骤318。
步骤316,将当前语句保存至result变量。
步骤318,将分支或循环语句分解为条件部分和语句体部分,并识别语句体部分包含的分支数量。
步骤320,若包含有多个分支,则将每个分支作为一个分支语句体,并为每个分支语句体生成唯一标识和注释语句,并将该唯一标识和注释语句合并至对应的分支语句体。
当然,如果仅包含一个分支,则直接在该分支中添加唯一标识和注释语句,并用“{}”将整条语句包括起来。在该技术方案中,由于在添加唯一标识和注释语句后,原来的单行语句有可能变为多行,因而通过使用“{}”将语句包括起来,避免影响代码的语句层次和结构,使得添加了唯一标识和注释语句的代码,仍然能够有序地执行,不会导致逻辑错误的发生。
步骤322,将条件部分和每个分支语句体重新合并为完整语句。
步骤324,将合并得到的完整语句保存至result变量。
步骤326,将唯一标识和注释语句的信息记录到分支清单中,以便测试时,用于与源代码进行对照比较,有助于提升效率。
步骤328,当确定所有的数值都已经处理结束后,将result变量存储至源文件中。然后返回步骤304,继续处理剩余的源文件,直至所有源文件都已经被处理。
以上结合附图详细说明了本发明的技术方案,本发明将具有全局唯一性的分支ID自动插入到源代码文件的分支语句和循环语句中,并且保证被修改的源代码文件的业务逻辑不变。避免了程序员手工维护分支ID的人为失误和工作量,大大提高工作效率,为了实现将白盒测试中路径覆盖指标拿来评价和完善黑盒测试用例设计工作的策略扫清了一个障碍。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种自动标记源代码的系统,其特征在于,包括:
代码读取单元,用于将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;
层次确定单元,用于预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次,其中,当所述当前行语句是以分号结尾时,所述当前行语句构成一条所述完整语句,当所述当前行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条所述完整语句;
类型判断单元,用于对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,否则判定为顺序执行语句;
语句处理单元,用于在所述分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,或将所述顺序执行语句直接保存至所述结果变量;
变量保存单元,用于对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
2.根据权利要求1所述的自动标记源代码的系统,其特征在于,所述语句处理单元还用于:
过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;
其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
3.根据权利要求1所述的自动标记源代码的系统,其特征在于,所述语句处理单元还用于:
若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
4.根据权利要求1至3中任一项所述的自动标记源代码的系统,其特征在于,所述语句处理单元还用于:
根据实时时间,为每个分支生成对应的唯一标识。
5.根据权利要求1至3中任一项所述的自动标记源代码的系统,其特征在于,还包括:
信息记录单元,用于将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
6.一种自动标记源代码的方法,其特征在于,包括:
步骤202,将任一源文件中的源代码读入字符串变量中,并将字符串变量按行分解为字符串数组;
步骤204,预读所述字符串数组中待分析的当前行语句和所述当前行语句的后三行语句的缩进格式符,通过将所述缩进格式符与标准的缩进格式符进行比较,以确定包含所述当前行语句在内的一条完整语句所处的语句层次,其中,当所述当前行语句是以分号结尾时,所述当前行语句构成一条所述完整语句,当所述当前行语句不是以分号结尾时,依次向下寻找以分号结尾的语句,并将该分号与前一个分号之间的所有语句作为一条所述完整语句;
步骤206,对于同一语句层次的任一完整语句,查看所述任一完整语句的起始关键字是否为标准的分支/循环语句关键字,若是,则确定所述任一完整语句为分支/循环语句,在该分支/循环语句的语句体部分的每个分支中添加唯一标识和注释语句,并将编辑后的所述分支/循环语句保存至结果变量,若不是,则直接将所述完整语句保存至所述结果变量;
步骤208,对所述字符串数组中的所有语句进行处理后,将所述结果变量保存至所述任一源文件中。
7.根据权利要求6所述的自动标记源代码的方法,其特征在于,所述步骤204之前,还包括:
过滤所述字符串数组中的空行、声明和已添加唯一标识和注释语句的分支;
其中,所述声明包括类声明、结构声明、接口声明、事件声明、引用声明和属性或函数声明。
8.根据权利要求6所述的自动标记源代码的方法,其特征在于,所述步骤206还包括:
若所述分支/循环语句的语句体部分为单行,则将所述语句体部分用“{}”包括起来,并添加所述唯一标识和注释语句。
9.根据权利要求6至8中任一项所述的自动标记源代码的方法,其特征在于,所述步骤206包括:
根据实时时间,为每个分支生成对应的唯一标识。
10.根据权利要求6至8中任一项所述的自动标记源代码的方法,其特征在于,所述步骤206还包括:
将添加至每个分支中的唯一标识、注释语句和所述源文件的信息记录至分支清单,其中,所述源文件的信息包括以下至少之一或其组合:文件路径、文件名称、类名、方法名。
CN201310397210.4A 2013-09-04 2013-09-04 自动标记源代码的系统和方法 Active CN103488460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310397210.4A CN103488460B (zh) 2013-09-04 2013-09-04 自动标记源代码的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310397210.4A CN103488460B (zh) 2013-09-04 2013-09-04 自动标记源代码的系统和方法

Publications (2)

Publication Number Publication Date
CN103488460A CN103488460A (zh) 2014-01-01
CN103488460B true CN103488460B (zh) 2015-12-02

Family

ID=49828721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310397210.4A Active CN103488460B (zh) 2013-09-04 2013-09-04 自动标记源代码的系统和方法

Country Status (1)

Country Link
CN (1) CN103488460B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107015905A (zh) * 2016-06-02 2017-08-04 阿里巴巴集团控股有限公司 查询源代码的方法和装置
CN106383734A (zh) * 2016-11-02 2017-02-08 北京神舟航天软件技术有限公司 一种从代码中提取详细设计的方法
CN107329974A (zh) * 2017-05-26 2017-11-07 福建师范大学 用于hls指令优化的数据提取方法及其系统
CN109799990B (zh) * 2017-11-16 2022-02-11 中标软件有限公司 源代码注释自动生成方法及系统
CN108196841B (zh) * 2018-01-03 2021-04-27 武汉斗鱼网络科技有限公司 注释符号添加方法、装置及电子设备
CN110825376B (zh) * 2018-08-07 2024-03-12 深圳Tcl数字技术有限公司 一种解析带注释json文件的方法、存储介质及装置
CN110018828B (zh) * 2019-03-11 2023-02-28 深圳市元征科技股份有限公司 源代码检查方法、装置及终端设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778169A (en) * 1995-08-07 1998-07-07 Synopsys, Inc. Computer system having improved regression testing
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
CN101739243A (zh) * 2008-11-19 2010-06-16 成都宇达电通有限公司 注解插入系统及其方法
CN102231109A (zh) * 2011-07-15 2011-11-02 南京大学 无痕可管理的源代码自动插桩方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778169A (en) * 1995-08-07 1998-07-07 Synopsys, Inc. Computer system having improved regression testing
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
CN101739243A (zh) * 2008-11-19 2010-06-16 成都宇达电通有限公司 注解插入系统及其方法
CN102231109A (zh) * 2011-07-15 2011-11-02 南京大学 无痕可管理的源代码自动插桩方法

Also Published As

Publication number Publication date
CN103488460A (zh) 2014-01-01

Similar Documents

Publication Publication Date Title
CN103488460B (zh) 自动标记源代码的系统和方法
CN106776515A (zh) 数据处理的方法及装置
CN103019937A (zh) 一种人机交互界面遍历测试方法
CN202736027U (zh) 等保测评中操作系统安全的自动测评系统
CN102591773A (zh) 等保测评中操作系统安全的自动测评方法及其系统
CN108920140A (zh) 一种前后端统一校验方法
CN106445815A (zh) 一种自动化测试方法及装置
CN103365772B (zh) 软件测试自动评价装置以及方法
CN103617122B (zh) 一种源代码的比对方法
CN115509904A (zh) 一种接口测试用例的断言生成方法及装置
CN107562593A (zh) 一种验证内存ecc功能的自动化测试方法与系统
CN110865932A (zh) 一种程序内部接口测试方法、系统、终端及存储介质
CN116245076A (zh) Drc测试版图库的自动构造方法及drc方法、系统、可读存储介质
CN110135431A (zh) 营业执照的自动识别方法及系统
CN115357494A (zh) 功能覆盖率代码的自动生成方法及装置
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
CN111950231B (zh) 一种bmc传感器信息检查比对方法及系统
CN114676061A (zh) 一种基于知识图谱自动化固件检测方法
CN113706056A (zh) 投标单位业绩识别预警方法、装置、设备及存储介质
CN102193556A (zh) 汽车电子器件中断安全隐患检测系统及其检测方法
CN111506544A (zh) 一种电网安全稳定控制装置策略模型文件校验方法及装置
CN116541305B (zh) 一种异常检测的方法、装置、电子设备及存储介质
CN117313604B (zh) 时序例外约束检查方法、装置、系统及存储介质
CN115545008B (zh) 一种谱图文件解析方法、装置、设备及存储介质
CN113419739B (zh) 节点图差异检测方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
CB02 Change of applicant information

Address after: 100094 Haidian District North Road, Beijing, No. 68

Applicant after: Yonyou Network Technology Co., Ltd.

Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Applicant before: UFIDA Software Co., Ltd.

COR Change of bibliographic data
GR01 Patent grant