一种基于深度强化学习变异的编译器警告缺陷检测方法技术

技术编号:44626304 阅读:14 留言:0更新日期:2025-03-17 18:23
本发明专利技术公开了一种基于深度强化学习变异的编译器警告缺陷检测方法,包括步骤如下:(1)使用自动化程序生成工具生成种子程序,并设计变异算子对种子程序进行变异操作,以此构建具有警告结构的变异程序;(2)构建深度强化学习模型,确定变异程序的状态集合、动作集合,并计算从初始状态到当前时刻所构建的变异程序的多样化分数,从而设计变异算子的奖励函数;(3)基于深度强化学习的变异算子选择策略,通过最小化深度强化学习模型的损失函数或者达到给定的迭代次数,从而生成变异算子选择策略;(4)利用生成的变异算子选择策略构造变异程序,并将其作为不同编译器前端的输入,通过分析不同编译器输出的警告诊断信息,从而检测不同类型的编译器警告缺陷。采用本发明专利技术设计的基于深度强化学习变异策略可以构造多样化且符合编程规范的警告结构,从而检测出更多的编译器前端警告缺陷,提高编译器前端警告缺陷的检测效率。

【技术实现步骤摘要】

本专利技术涉及软件测试、编译器测试领域,主要涉及编译器前端警告缺陷测试。


技术介绍

1、在软件开发的过程中,编译器不仅能够对代码进行优化,提高目标代码的质量,还能够提高软件的开发效率,帮助开发人员在程序运行前就发现并修复问题,从而提高软件可靠性。在程序编译过程中,如果程序中存在编程语言的未定义行为,例如数组访问越界和使用未初始化变量等,编译器会触发警告诊断机制并输出相应的警告信息帮助开发者检查代码。因此,编译器不仅能够通过代码优化提升软件的跨平台兼容性,而且还对程序进行了错误检测与调试工作。

2、当前,编译器的质量已经因其重要作用而获得了各界的广泛关注。编译器能否准确指明程序中出现的错误,更是其是否可靠、有效的标准。为了保证编译器的质量,进行编译器测试是重要的方法之一,它通过生成各式各样复杂的测试程序,来检测编译器是否存在潜在的缺陷。因此,如何生成有效又多样的测试程序也就成为了其中的关键问题之一。对于许多开发者而言,编译器前端的警告信息对于解决潜在隐患具有重要意义。

3、尽管开发人员已经尽全力维护编译器质量以确保编译器的可靠性,但是本文档来自技高网...

【技术保护点】

1.一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,步骤(1)中所述变异算子包括插入变异算子、删除变异算子和替换变异算子中的一种;所述插入变异算子,包括插入算术表达式、插入逻辑运算语句、插入赋值语句、插入分支语句、插入循环语句、插入函数体及其调用函数中的一种;所述删除变异算子,包括删除表达式语句、删除赋值语句、删除变量数据类型、删除变量修饰符、删除函数声明、删除函数体、删除循环结构、删除分支控制结构中的一种;所述替换变异算子,包括替换变量数据类型、替换变量修饰符...

【技术特征摘要】

1.一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,步骤(1)中所述变异算子包括插入变异算子、删除变异算子和替换变异算子中的一种;所述插入变异算子,包括插入算术表达式、插入逻辑运算语句、插入赋值语句、插入分支语句、插入循环语句、插入函数体及其调用函数中的一种;所述删除变异算子,包括删除表达式语句、删除赋值语句、删除变量数据类型、删除变量修饰符、删除函数声明、删除函数体、删除循环结构、删除分支控制结构中的一种;所述替换变异算子,包括替换变量数据类型、替换变量修饰符、替换算术运算符、替换逻辑运算符、替换关系运算符、替换变量名、替换函数名中的一种。

3.根据权利要求1所述的一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,步骤(2)中所述程序状态集合表示为:

4.根据权利要求3所述的一种基于深度强化学习变异的编译器警告缺陷检测方法,其特征在于,语句类型特征是指变异程序中存在的不同类型程序语句的个数,包括for循环语句、while循环语句、if-else语句等;表达式类型特征是指变异程序中存在的不同类型表示式语句的个数,包括算术表达式、关系表达式、逻辑表达式等;变量类型特征是指当前程序中存在的具有不同数据类型变量的个数,包括struct、int、char、const、static等;操作类型特征是变异程序中存在的不...

【专利技术属性】
技术研发人员:唐艺璇张静宣黄志球
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1