2.7 KiB
基于社区问答网站的软件缺陷修复信息智能推荐工具
简介
支持自动分析存在API缺陷的代码,给出相应的修复方案和相关的社区问答网站的讨论信息。首先将缺陷代码抽取为API调用序列,一方面将API名称作为关键词查询相关的社区问答网站(如StackOverflow网站)获得该API缺陷的讨论信息(问题和相关解决方法),帮助软件开发人员更好地理解缺陷产生的原因和解决思路;另一方面利用Github等开源项目托管平台收集API相关的代码,训练缺陷修复模型,用于预测存在缺陷的API序列缺失了何种API调用,以及缺失所在的具体代码位置,并以可视化的形式将此类修复方案展示给开发人员,待开发人员交互确认后,基于类型匹配的方法尽可能自动修复缺陷代码(包括自动补齐API所涉及的返回值和输入参数变量)。
通过工具配置界面,可指定编程语言类型、API列表等,并可上传包含特定编程语言代码的训练数据集,从而支持主流的编程语言,如C、Java、Python等。
技术概要
当前软件开发过程中往往需要使用大量的外部软件开发包,由于应用编程接口(API)文档不够充分或开发人员不熟悉API使用所导致的API相关软件缺陷大量存在,极大降低了软件开发的质量和提高了软件的维护成本。考虑到Stackoverflow此类编程社区问答网站积累了大量的编程问题和高质量的回答,涉及API相关的问答有助于软件开发人员理解当前代码缺陷产生的原因和相关解决方法。另外,开源项目托管平台,如Github,存在大量的开源项目源代码能够提供各类编程语言及常用软件开发包API的使用样例,也可为软件开发人员提供API相关缺陷修复的具体解决方案。
本工具主要包含两个核心功能:
1)推荐合适的社区问答网站讨论信息,帮助开发人员理解当前处理的API相关缺陷代码产生的原因和解决思路,具体实现包括基于缺陷代码的API关键词抽取,并基于API关键词搜索社区问答网站并排序搜索结果;
2)自动为存在API相关缺陷的代码生成修复方案,供开发人员选择和确认,并完成代码的修改,具体实现包括构造了一个基于循环神经网络和注意力机制的API缺陷修复模型,利用开源项目托管平台上获取的代码训练模型,将缺陷代码抽取为API调用序列输入模型预测出缺失的API调用及缺失位置。上述功能可有效帮助开发人员提高API相关缺陷的修复效率,从而提高软件开发的效率和质量。