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