Page 182 - 《软件学报》2026年第7期
P. 182

宋壹 等: 基于异常检查点植入的软件缺陷定位方法                                                        2867


                 方法通过自动植入异常处理语句, 使得异常触发流这一更轻量和更具针对性的信息源在异常处理语句缺失的情况
                 下仍能用于缺陷定位, 有效解决了前期方法对待测程序原本异常处理语句的高度依赖, 提升了异常信息在真实世
                 界缺陷定位任务中的泛化性.

                  6   总 结
                    针对软件缺陷定位领域面临的信息源庞杂、难以分析问题, 以及前期所提基于异常触发流的缺陷定位技术
                 EXPECT  泛化性不足的挑战, 本文提出一种基于异常检查点植入的软件缺陷定位技术                        INSPECT. 在待测错误程序
                 缺失异常处理语句的情况下, 设计自动化方法在程序中植入                   Try-catch  块, 使得异常触发信息这一轻量且能有效帮
                 助定位软件缺陷的数据仍能顺利收集; 基于伪正确版本的生成对所收集的异常触发信息及程序执行跟踪进行分
                 析, 确定失败执行和通过执行的分歧点; 基于对分歧点的分析, 为所有程序语句计算风险值, 并采用行级缺陷定位
                 技术对得到的风险值进行精化, 缓解制约缺陷定位任务有效开展的                      Tie 问题. 实验结果表明, INSPECT   方法能够有
                 效超过现有最优技术: 在       Defects4J 的  540  个错误程序上, INSPECT  开展缺陷定位的    EXAM_Best、EXAM_Average
                 和  EXAM_Worst 指标值的提升幅度分别为        95.25%、55.92%、16.65% (模拟缺陷) 以及    93.39%、57.54%、13.92%
                 (真实缺陷), MRR  指标值的提升幅度为        311.47% (模拟缺陷) 和   283.31% (真实缺陷), 基于两个备择假设的显著性
                 检验也证实了     INSPECT  相较于基线技术的提升.
                    在本工作中, 为了让方法具有较高的泛化性, 采用了按固定间隔的方式植入                        Try-catch  块, 且所植入  Try-catch
                 块对捕获异常信息的种类没有限制. 下一步工作中, 考虑引入被测程序逻辑设计和代码结构的先验知识, 通过对待
                 测程序进行深入理解, 推荐出更有利于缺陷定位任务的检查点植入位置及植入方法, 以进一步提升方法效果.


                 References
                  [1]   Roush T, Bushard B. CrowdStrike’s massive global tech outage: Airlines, hospitals, banks, 911, governments impacted. 2024. https://
                     www.forbes.com/sites/tylerroush/2024/07/19/crowdstrikes-massive-global-tech-outage-airlines-banks-911-state-services-impacted
                  [2]   Krasner H. The cost of poor software quality in the US: A 2022 report. 2022. https://www.it-cisq.org/wp-content/uploads/sites/6/2022/11/
                     CPSQ-Report-Nov-22-2.pdf
                  [3]   Yue L, Cui ZQ, Chen X, Wang RC, Li L. Statement level software bug localization based on historical bug information retrieval. Ruan
                     Jian Xue Bao/Journal of Software, 2024, 35(10): 4642–4661 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/6980.
                     htm [doi: 10.13328/j.cnki.jos.006980]
                  [4]   Li ZL, Chen X, Jiang ZW, Gu Q. Survey on information retrieval-based software bug localization methods. Ruan Jian Xue Bao/Journal of
                     Software, 2021, 32(2): 247–276 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/6130.htm [doi: 10.13328/j.cnki.jos.
                     006130]
                  [5]   Yang YM, Xia X, Lo D, Bi TT, Grundy J, Yang XH. Predictive models in software engineering: Challenges and opportunities. ACM
                     Trans. on Software Engineering and Methodology, 2022, 31(3): 56. [doi: 10.1145/3503509]
                  [6]   Wu YH, Li Z, Liu Y, Chen X. FATOC: Bug isolation based multi-fault localization by using OPTICS clustering. Journal of Computer
                     Science and Technology, 2020, 35(5): 979–998. [doi: 10.1007/s11390-020-0549-4]
                  [7]   Gao RZ, Wong WE. MSeer—An advanced technique for locating multiple bugs in parallel. IEEE Trans. on Software Engineering, 2019,
                     45(3): 301–318. [doi: 10.1109/TSE.2017.2776912]
                  [8]   Jiang JJ, Wang YM, Chen JJ, Lv DL, Liu MJ. Variable-based fault localization via enhanced decision tree. ACM Trans. on Software
                     Engineering and Methodology, 2024, 33(2): 41. [doi: 10.1145/3624741]
                  [9]   Wen M, Xie ZF, Luo KX, Chen X, Yang YB, Jin H. Effective isolation of fault-correlated variables via statistical and mutation analysis.
                     IEEE Trans. on Software Engineering, 2023, 49(4): 2053–2068. [doi: 10.1109/TSE.2022.3209590]
                 [10]   Li Z, Wu YH, Wang HF, Chen X, Liu Y. Review of software multiple fault localization approaches. Chinese Journal of Computers, 2022,
                     45(2): 256–288 (in Chinese with English abstract). [doi: 10.11897/SP.J.1016.2022.00256]
                 [11]   Widyasari R, Prana GAA, Haryono SA, Wang SW, Lo D. Real world projects, real faults: Evaluating spectrum based fault localization
                     techniques on Python projects. Empirical Software Engineering, 2022, 27(6): 147. [doi: 10.1007/s10664-022-10189-4]
                 [12]   Song Y, Xie XY, Zhang XH, Liu QM, Gao RZ. Evolving ranking-based failure proximities for better clustering in fault isolation. In:
                     Proc.  of  the  37th  IEEE/ACM  Int’l  Conf.  on  Automated  Software  Engineering.  Rochester:  ACM,  2022.  41.  [doi:  10.1145/3551349.
   177   178   179   180   181   182   183   184   185   186   187