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

2864                                                       软件学报  2026  年第  37  卷第  7  期


                 关, 具体而言, 不同于开发者自己设置的异常处理代码, INSPECT                自动植入的异常处理代码不具备开发者对程序
                 逻辑的深入理解, 使得临时植入用于缺陷定位的检查点需要相对更高的密度, 以确保其能有效捕获程序错误执行
                 状态, 进而准确找到分歧点. 此外, 相较于原始设置更低的检查点植入密度也可能导致错误的执行状态在产生后更
                 晚被捕获, 使得方法更有可能为程序语句计算出一致的风险值, 从而影响缺陷定位的有效性. 当检查点的植入密度
                 被设置为比原始密度        20%  更高的  25%  时, 可以发现, INSPECT  的缺陷定位效果同样出现了下降 (如在            20%  密度
                 时的  EXAM_Average 值为  5.85, 而在  25%  的密度时却上升到    29.66). 这一现象的可能原因是, 检查点植入密度的
                 增加使得方法收集到的异常触发信息规模一并增加, 更大规模的信息有可能引入与反映程序执行状态无关的冗余
                 信息, 同时也会增加分析难度. 表         7  呈现的趋势与表    6  基本相同. 同样以   EXAM_Average 为例, 配置  20%  密度值的
                 原始  INSPECT  方法的指标值为     5.46, 而在  10%、5%  和  1%  的密度值下, 该值分别为    7.28、9.74  和  80.43, 效果呈
                 明显下降趋势. 当检查点的植入密度被设置为比原始密度                  20%  更高的  25%  时, 可以发现, INSPECT  的缺陷定位效
                 果同样出现下降, 其      EXAM_Average 值上升至  5.52.

                                表 7 不同检查点植入密度下         INSPECT  方法的缺陷定位有效性 (真实缺陷)

                               密度值 (%)          EXAM_Best       EXAM_Average      EXAM_Worst
                                  1               74.40            80.43             86.47
                                  5               4.00              9.74             15.48
                                  10              2.45              7.28             12.12
                             20 (INSPECT C )      0.85              5.46             11.07
                                  25              0.95              5.52             11.08

                                                1%  5%  10%  20% (INSPECT C )  25%
                      250                                     100
                                                237.73
                                    215.73                     90                        86.47
                      200  193.72                              80  74.40      80.43
                                                               70
                      150                         140.79       60
                                       124.37
                                                               50
                           107.05
                      100                                      40
                                                               30
                      50                            33.74 35.53  20                        15.48 12.12  11.08
                                23.78   28.03 29.66            10               9.74          11.07
                                                     11.06          4.00 2.45 0.850.95  7.28 5.465.52
                             0.910.63     5.85
                       0                                        0
                           EXAM_Best  EXAM_Average  EXAM_Worst     EXAM_Best  EXAM_Average  EXAM_Worst
                                    (a) 模拟缺陷                                  (b) 真实缺陷
                                    图 5 不同检查点植入密度下         INSPECT  方法的缺陷定位有效性

                    综上所述, 过高或过低的检查点植入密度均会对                INSPECT  方法的缺陷定位有效性以及          Tie 问题缓解能力产
                 生负面影响. 在本研究问题选取的          1%、5%、10%、20%   和  25%  这  5 种不同的检查点植入密度中, 20% (即     INSPECT
                 原始设置) 具有最优的表现. 因此, 当后续研究者采用本方法时, 推荐采用                    20%  的检查点植入密度, 因为更低或更
                 高的密度均会导致效果的下降, 同时更高的密度也会增加方法运行的时间和计算成本, 与                            INSPECT  方法提出时的
                 轻量级初衷不符.
                  4.4   程序语句风险值计算方法如何影响         INSPECT  方法的效果
                    INSPECT  方法通过对异常触发流进行分析确定分歧点, 并结合现有行级缺陷定位技术, 共同为待测错误程序
                 语句计算风险值, 具体如第        2.4  节中的公式   (1) 所示. 本研究问题对该风险值计算方法的合理性进行讨论, 通过修
                           i
                        Sus  的计算规则生成不同的变体, 并对它们的缺陷定位效果进行比较.
                 改算法中      s
                                                                  n ∑
                    根据前述介绍, 为程序语句计算的风险值             Suspiciousness s 由   Sus  和  Assist_Sus s  两项组成, 其中前者是主要部
                                                                       i
                                                                       s
                                                                  i=1
                                               i
                 分, 后者是辅助部分. 在计算规则中,        Sus  由程序语句   s 对可能含有缺陷的语句组        Suspicious_Group  的从属关系确定.
                                                                                           i
                                               s
   174   175   176   177   178   179   180   181   182   183   184