Page 48 - 《软件学报》2024年第6期
P. 48

2624                                                       软件学报  2024  年第  35  卷第  6  期


                    兼容性测试的实验评估结果表明, 我们的               DDoop  能够完全兼容所有精度的指针分析规则, 而              Doop-SE  和
                 Doop-DDlog  都只能处理简化的     micro  分析规则, 在其他复杂分析规则上均无法做到正确兼容. 此外, 由于我们的
                 规则重写器的通用性和完备性, 除了实验评估中用到的指针分析规则, Doop                     中其他精度的指针分析规则我们也能
                 够兼容, 并且对于未来在       Doop  基础上开发的程序分析规则也能够继续提供兼容性.

                 3.4   RQ3: 精度
                    为了评估我们的增量指针分析框架前端采取的剪枝策略对最终分析结果的影响, 在这部分的实验中, 我们会
                 分别启用和关闭前端增量生成过程中的剪枝选项进行对比. 具体而言, 对于每一个不同的待分析程序和分析精度
                 的组合, 我们会分别运行两次依次分析每一个               jar 包的增量分析, 其中一次会在前端生成事实时开启剪枝, 另一次
                 则不开启剪枝. 在最后, 我们将统计两者最后分析结果的差异.
                    表  3  展示了前端剪枝选项在       5  个基准项目、7   种指针分析规则上对指针分析结果精度的影响. 其中使用了                    3
                 种指标#vpt、#fpt 和#call-edge 来度量指针分析结果的精度, 分别对应           Doop  框架中定义的   3  种关系: VarPointsTo、
                 InstanceFieldPointsTo  和  CallGraphEdge. 需要注意的是, 在  Doop  框架定义中, 这些关系中引入了上下文信息, 为了
                 符合对指针分析算法精度评估的一般惯例, 我们使用一个简单的数据过滤程序过滤了其中仅上下文不同的数据,
                 得到了表    3  中现在的结果. 可以看出, 在我们实验基准集上, 在增量输入事实生成阶段引入剪枝策略在除了                            Jedis
                 项目以外的其他仓库上都没有影响以上              3  个精度指标. 而在   Jedis 项目中, 剪枝后的版本在所有精度设置下的精度
                 指标都略微差于剪枝前, 整体差距约在            2%  左右.

                                             表 3 剪枝选项对指针分析精度的影响

                                                Precision metrics (unpruned)    Precision metrics (pruned)
                    Project     Analysis
                                              #vpt      #fpt    #call-edge   #vpt      #fpt     #call-edge
                                  CI        1 624 685  148 313    55 137    1 661 612  150 356   55 496
                                  lobj      899 178    54 102     50 983    921 445    54 721    51 309
                                 2objH      416 994    34 655     47 565    421 017    34 832    47 825
                     Jedis      1callsite   1 112 252  90 253     52 216    1 136 813  91 134    52 550
                                                       73 262
                                                                  52 087
                                                                                       74 132
                                 1type      1 045 098  121 498
                                                                                                 52 449
                                                                            1 069 259
                                 2typeH     417 744    34 655     47 568    421 767    34 832    47 828
                              selective2objH  542 573  42 007     48 477    552 705    42 336    48 791
                                  CI        1 349 996  121 779    50 993    1 349 996  121 779   50 993
                                  lobj      783 850    48 511     47 363    783 850    48 511    47 363
                                 2objH      372 583    31 409     43 993    372 583    31 409    43 993
                   ErrorProne   1callsite   927 188    73 538     48 284    927 188    73 538    48 284
                                 1type      904 739    64 988     48 448    904 739    64 988    48 448
                                 2typeH     373 315    31 409     43 996    373 315    31 409    43 996
                              selective2objH  492 411  37 874     44 873    492 411    37 874    44 873
                                  CI        2 713 829  217 008    66 106    2 713 829  217 008   66 106
                                  lobj      1 505 314  72 831     61 765    1 505 314  72 831    61 765
                                 2objH      563 567    41 641     55 098    563 567    41 641    55 098
                   ZooKeeper    1callsite   1 731 519             62 693    1 731 519  121 498   62 693
                                 1type      1 618 749  95 138     62 130    1 618 749  95 138    62 130
                                 2typeH     575 060    41 770     55 204    575 060    41 770    55 204
                              selective2objH  762 910  50 018     56 091    762 910    50 018    56 091
                                  CI        2 789 814  204 493    63 638    2 789 814  204 493   63 638
                                  lobj      1 589 995  72 821     59 057    1 589 995  72 821    59 057
                                 2objH      607 586    44 393     52 482    607 586    44 393    52 482
                     PMD        1callsite   1 755 897  106 580    59 658    1 755 897  106 580   59 658
                                 1type      1 702 373  94 118     59 731    1 702 373  94 118    59 731
                                 2typeH     623 805    44 860     52 537    623 805    44 860    52 537
                              selective2objH  924 034  59 498     54 239    924 034    59 498    54 239
   43   44   45   46   47   48   49   50   51   52   53