api-repair-plugin/README.md

2.7 KiB
Raw Blame History

基于社区问答网站的软件缺陷修复信息智能推荐工具

简介

支持自动分析存在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相关缺陷的修复效率从而提高软件开发的效率和质量。