南大软分实验笔记|A6 上下文敏感的指针分析

💡 原文中文,约17600字,阅读约需42分钟。
📝

内容提要

本文介绍了南大软件分析课程的第六个实验,讨论了上下文敏感的过程间指针分析。实验包含两部分,实现了上下文敏感指针分析的主要逻辑,并实现了三种不同的上下文敏感策略。文章还提供了新增的分析规则和实现代码,并总结了实验的思考和总结。

🎯

关键要点

  • 本文介绍了南大软件分析课程的第六个实验,重点是上下文敏感的过程间指针分析。
  • 实验分为两部分:实现上下文敏感指针分析的主要逻辑和三种不同的上下文敏感策略。
  • 新增的分析规则包括对静态字段、数组索引和静态方法调用的支持。
  • 实现上下文敏感指针分析时,需要为每个可达方法创建独立的StmtProcessor实例。
  • 实现过程中,涉及到的核心逻辑包括语句处理、指针流图的添加和分析。
  • 实现了常见的上下文敏感策略,包括call-site sensitivity、object sensitivity和type sensitivity。
  • 总结部分强调实践的重要性,指出理论学习与实际操作之间的差距。

延伸问答

上下文敏感的过程间指针分析的主要逻辑是什么?

主要逻辑包括语句处理、指针流图的添加和分析,需为每个可达方法创建独立的StmtProcessor实例。

实验中实现了哪些上下文敏感策略?

实现了call-site sensitivity、object sensitivity和type sensitivity三种上下文敏感策略。

新增的分析规则包括哪些内容?

新增规则包括对静态字段、数组索引和静态方法调用的支持。

在实现过程中遇到了哪些挑战?

在实现object sensitivity和type sensitivity时遇到了一些问题,经过调试后解决了k=1的实现问题。

实验总结中强调了什么重要性?

总结部分强调了实践的重要性,指出理论学习与实际操作之间的差距。

如何为每个可达方法创建StmtProcessor实例?

在addReachable方法中,通过传入上下文信息为每个可达方法创建独立的StmtProcessor实例。

➡️

继续阅读