测试主函数头文件的自动整理方法、装置与流程

文档序号:35668915发布日期:2023-10-07 13:50阅读:22来源:国知局
测试主函数头文件的自动整理方法、装置与流程

本发明涉及系统测试,具体涉及一种测试主函数头文件的自动整理方法、装置。


背景技术:

1、c语言头文件是一种包含函数声明、宏定义、结构体定义等内容的文本文件,用于在c程序中引入外部代码。头文件通常具有.h的文件扩展名。头文件的主要作用是提供程序中所需的函数、变量和类型的声明,以便在程序中使用它们而无需重新编写代码。通过头文件,可以将外部代码的功能引入到当前程序中,提高代码的复用性和模块化。

2、目前,测试主函数的头文件的整理都是技术人员利用自己对测试模块的理解,用一些代码编辑器编写针对该测试主函数的测试代码,用搜索函数定义的方法挨个添加头文件,然后尝试运行测试文件,再从报错中挨个添加缺失的头文件。这种整理方法操作较为繁琐,对于一些大的软件工程,许多模块是分别交给不同的开发人员编写的,头文件路径会发生改变,每一次优化后的代码进行单个模块集成测试时,都需要测试人员重新整理头文件,耗时极长,耽误测试进程。


技术实现思路

1、本发明要解决的技术问题是:现有的头文件整理方式操作繁琐的技术问题。

2、为此,本发明提供一种测试主函数头文件的自动整理方法,能够提高头文件整理的便捷性。

3、本发明解决其技术问题所采用的技术方案是:一种测试主函数头文件的自动整理方法,包括:

4、s1、获取工程文件的工程路径和测试主文件的工程路径;

5、s2、遍历所有的工程文件,提取出工程文件的自定义函数名与结构体名;

6、s3、创建字典数据格式的全局变量a和b,将所述自定义函数名与其头文件的工程路径进行关联,存储到全局变量a中,将所述结构体名与其头文件的工程路径进行关联,存储到全局变量b中;

7、s4、遍历所述测试主文件,得到测试主文件包含的自定义函数名和结构体名;

8、s5、根据步骤s4得到的自定义函数名在全局变量a的字典中查找对应的头文件的工程路径,根据步骤s4得到的结构体名在全局变量b的字典中查找对应的头文件的工程路径;

9、s6、对查找到的头文件的工程路径用哈希表的方式进行去重后,按照头文件添加格式进行处理后添加至测试主函数文件中。

10、进一步的,所述字典数据格式包括:键以及与键对应的值;关联时,将所述自定义函数名或结构体名作为键,与所述自定义函数名或结构体名对应的头文件的工程路径作为值。

11、进一步的,步骤s2中,利用c语言编译器中的ast语言分析器分析所述工程文件的.h文件,选择function_decl、struct_decl结点把工程文件中的自定义函数名、结构体名提取出来。

12、进一步的,步骤s4具体包括:s41、利用c语言编译器的ast语言分析器分析所述测试主文件的.c文件,仅选择function_decl结点,用get_function_content(cursor)得到自定义函数的起始位置,再用start_index=function_content.find('{')+1、end_index=function_content.rfind('}')匹配得到每个自定义函数的内部代码,进而在每个自定义函数的内部代码中,采用正则表达式r'(?<=\s)(([a-z]*)+([_][a-z]*)+)'提取结构体名,采用正则表达式r'.*\s+(\w+)\('提取自定义函数名。

13、进一步的,步骤s4还包括:s42、若发现所述自定义函数调用了子函数和结构体,则根据自定义函数名在所述全局变量a的字典中找到对应的头文件工程路径或根据结构体名在所述全局变量b的字典中找到对应的头文件工程路径;根据找到的头文件的工程路径获得工程文件的.h文件,将该.h文件加入哈希表中并去重;将该.h文件变换成.c文件,重步骤s41即可提取出子函数名和结构体名。

14、进一步的,步骤s4还包括:s43、在找到的结构体名对应的.h文件中,用c语言编译器的ast语言分析器分析.h文件,选择struct_decl结点,用get_function_content(cursor)得到结构体的起始位置,再用start_index=function_content.find('{')+1、end_index=function_content.rfind('}')匹配得到每个结构体的内部代码,进而在结构体的内部代码中,采用正则表达式r'(?<=\s)(([a-z]*)+([_][a-z]*)+)'提取结构体名;若有提取出新的结构体名,则进入字典查找环节。

15、进一步的,步骤s6中,用哈希表对查找到的头文件的工程路径进行去重后,得到该测试.c文件所要添加的所有非重复的头文件。

16、进一步的,每个头文件的工程路径可以得到一个对应的哈希值,将该哈希值与哈希表中已存在的哈希值进行比较,若发现哈希表中存在相同的哈希值,则表明该头文件的工程路径已存在,若哈希表中未发现相同的哈希值,则将该头文件的工程路径添加到哈希表中。

17、本发明还提供一种测试主函数头文件的自动整理装置,包括:

18、获取单元,用于获取工程文件的工程路径和测试主文件的工程路径;

19、提取单元,用于提取工程文件的自定义函数名与结构体名;

20、关联单元,用于创建字典数据格式的全局变量a和b,将所述自定义函数名与其头文件的工程路径进行关联,存储到全局变量a中,将所述结构体名与其头文件的工程路径进行关联,存储到全局变量b中;

21、执行单元,用于遍历测试主文件得到测试主文件包含的自定义函数名和结构体名;根据得到的测试主文件的自定义函数名、结构体名查找对应的头文件的工程路径;

22、整理单元,用于对查找到的头文件的工程路径进行哈希表去重后,按照头文件添加格式进行处理后添加至测试主函数文件中。

23、本发明的有益效果是,本发明的测试主函数头文件的自动整理方法、装置,通过将自定义函数名和头文件路径进行关联,将结构体名和头文件路径进行关联,便于测试人员可以快速查找到头文件路径;通过采用哈希表可以识别出头文件路径是否重复,防止重复添加;本发明通过逐级查找、整理,可以提高头文件整理的完整性,防止漏查。本发明操作简单、实用性强,有利于提高测试人员的工作效率。



技术特征:

1.一种测试主函数头文件的自动整理方法,其特征在于,包括:

2.如权利要求1所述的测试主函数头文件的自动整理方法,其特征在于,所述字典数据格式包括:键以及与键对应的值;关联时,将所述自定义函数名或结构体名作为键,与所述自定义函数名或结构体名对应的头文件的工程路径作为值。

3.如权利要求1所述的测试主函数头文件的自动整理方法,其特征在于,步骤s2中,利用c语言编译器中的ast语言分析器分析所述工程文件的.h文件,选择function_decl、struct_decl结点把工程文件中的自定义函数名、结构体名提取出来。

4.如权利要求1所述的测试主函数头文件的自动整理方法,其特征在于,步骤s4具体包括:s41、利用c语言编译器的ast语言分析器分析所述测试主文件的.c文件,仅选择function_decl结点,用get_function_content(cursor)得到自定义函数的起始位置,再用start_index=function_content.find('{')+1、end_index=function_content.rfind('}')匹配得到每个自定义函数的内部代码,进而在每个自定义函数的内部代码中,采用正则表达式r'(?<=\s)(([a-z]*)+([_][a-z]*)+)'提取结构体名,采用正则表达式r'.*\s+(\w+)\('提取自定义函数名。

5.如权利要求4所述的测试主函数头文件的自动整理方法,其特征在于,步骤s4还包括:s42、若发现所述自定义函数调用了子函数和结构体,则根据自定义函数名在所述全局变量a的字典中找到对应的头文件工程路径或根据结构体名在所述全局变量b的字典中找到对应的头文件工程路径;根据找到的头文件的工程路径获得工程文件的.h文件,将该.h文件加入哈希表中并去重;将该.h文件变换成.c文件,重步骤s41即可提取出子函数名和结构体名。

6.如权利要求5所述的测试主函数头文件的自动整理方法,其特征在于,步骤s4还包括:s43、在找到的结构体名对应的.h文件中,用c语言编译器的ast语言分析器分析.h文件,选择struct_decl结点,用get_function_cont ent(cursor)得到结构体的起始位置,再用start_index=function_content.find('{')+1、end_index=function_content.rfind('}')匹配得到每个结构体的内部代码,进而在结构体的内部代码中,采用正则表达式r'(?<=\s)(([a-z]*)+([_][a-z]*)+)'提取结构体名;若有提取出新的结构体名,则进入字典查找环节。

7.如权利要求6所述的测试主函数头文件的自动整理方法,其特征在于,步骤s6中,用哈希表对查找到的头文件的工程路径进行去重后,得到该测试.c文件所要添加的所有非重复的头文件。

8.如权利要求7所述的测试主函数头文件的自动整理方法,其特征在于,每个头文件的工程路径可以得到一个对应的哈希值,将该哈希值与哈希表中已存在的哈希值进行比较,若发现哈希表中存在相同的哈希值,则表明该头文件的工程路径已存在,若哈希表中未发现相同的哈希值,则将该头文件的工程路径添加到哈希表中。

9.一种测试主函数头文件的自动整理装置,其特征在于,包括:


技术总结
本发明公开了一种测试主函数头文件的自动整理方法,包括:S1、获取工程文件的工程路径和测试主文件的工程路径;S2、遍历所有的工程文件,提取出工程文件的自定义函数名与结构体名;S3、将自定义函数名与其头文件的工程路径进行关联;将结构体名与其头文件的工程路径进行关联;S4、遍历测试主文件,得到测试主文件包含的自定义函数名和结构体名;S5、根据步骤S4得到的自定义函数名查找对应的头文件的工程路径,根据步骤S4得到的结构体名查找对应的头文件的工程路径;S6、对查找到的头文件的工程路径用哈希表的方式进行去重后,按照头文件添加格式进行处理后添加至测试主函数文件中。本发明操作简单、实用性强,有利于提高测试人员的工作效率。

技术研发人员:宋国强
受保护的技术使用者:上海星宇智行技术有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1