Page 125 - 《软件学报》2025年第4期
P. 125

曹帅 等: 深度学习在基于信息检索的缺陷定位中的应用综述                                                    1531


                    随着软件规模的扩大和复杂化, 在软件的开发和维护过程中软件缺陷是不可避免的. 软件缺陷降低了软件的
                 质量, 会给企业造成重大的经济损失           [1] . 并且在软件开发和维护中, 调试是成本最高的活动之一              [2,3] , 因此使用  Jira,
                 Bugzilla 等问题跟踪系统进行软件缺陷管理起着至关重要的作用. 问题跟踪系统和缺陷报告提供了软件缺陷的重
                 要信息, 包括缺陷描述、环境背景以及重现缺陷的具体限制. 为了修复一个新的缺陷, 开发人员必须仔细分析该缺
                 陷报告, 并在大量的源代码文件中找到潜在的缺陷文件. 当一个项目有许多源文件时, 准确定位有问题的代码相当
                 困难. 程序调试和缺陷定位甚至可以占用开发人员                50%  的工作时间和    25%  的软件开发总成本     [4] , 而对于缺乏经验
                 的开发人员, 缺陷定位的时间占比可能更高. 对于开发人员来说, 为了降低维护成本, 提高整个软件开发团队的生
                 产力, 高效的缺陷定位技术是减少成本的理想选择. 为此, 现有研究提出了一系列基于信息检索的缺陷定位方法.
                 这类方法使用自然语言处理与机器学习技术, 自动识别和定位引入缺陷的软件变更版本、潜在的缺陷文件或缺陷
                 代码. 基于信息检索的缺陷定位方法使用简单, 执行成本较低, 在提升缺陷定位准确性的同时, 也减少了开发人员
                 在查找缺陷上的时间投入, 提高了软件开发效率, 从而降低软件开发和维护成本.
                    基于信息检索的缺陷定位的任务是, 给出一个缺陷报告, 根据缺陷报告的内容确定导致此缺陷的源代码构件
                 (文件、方法、代码行等). 基于信息检索的缺陷定位的具体过程是, 当用户使用系统时发现问题, 并将缺陷报告
                 (bug report) 提交进问题跟踪系统, 开发人员在根据缺陷报告进行缺陷定位时, 需要阅读缺陷报告中的题目和描述,
                 在代码库中检索与缺陷描述最为接近的源代码构件                  (文件、方法、行等), 进而修改源代码以修复缺陷. 图              1  与图  2
                 分别是   SWT (standard widget toolkit) 项目中一个缺陷报告及产生该缺陷的对应源代码. 图            1  缺陷报告  (https://
                 bugs.eclipse.org/bugs/show_bug.cgi?id=405244) 的题目中包含关键词  Accessibility  和  Iaccessible2, 并且在描述中提
                 及了源代码中的方法       get_groupPosition(), AccessibleControlListener.getChild(). 根据这些关键词定位到可能导致此
                 缺陷的代码文件夹       bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/, 其中根
                 据提及的方法名可定位到如图           2  所示的  Accessible.java 文件钟相关代码行并修复缺陷.





































                                               图 1 SWT  项目中的一个缺陷报告
   120   121   122   123   124   125   126   127   128   129   130