session.log · public
本文浏览

知识点

流敏感

  • 上下文敏感技术
  • 过程间分析技术 ICFG = CFGs + call &return edges
  • 指针分析技术

上下文敏感(Context Sensitivity CS)


过程间分析技术

在乎每一个过程,每一个方法的具体执行情况,大大提升精度。


流不敏感

  • CHA技术

  • 过程内分析

  • 上下文不敏感


CHA (类继承关系构建)的特征

  1. 只考虑类继承结构,所以很快
  2. 因为忽略了数据流和控制流的信息,所以不太准确

面试题

AST和IR的对比

AST 相对来说比较**高级**,可读性比较高对象开发者,而相反IR更倾向于机器。AST规范不统一,每一种语言大致相同但不完全一样,而IR是统一的规范的。

Call Graph Construction (CHA) 调用关系图构造

  • 过程间分析 必要的数据结构Call Graph
  • 当前有数种方法来构建Call Graph,本节介绍其中速度最快的一种(Class hierarchy analysis,简称CHA)

流敏感与上下不敏感对比

  1. 首先流敏感技术的速度会大大降低,但精度会大大提高。牺牲精度从而提高速度。
  2. 流敏感分析重视语句执行的顺序,而流不敏感分析则恰恰相反。

    这也了导致前者的精度更高,但优势不是特别大;后者的开销则远远小于前者。

  3. 流敏感技术一般都是采用上下文敏感和过程间分析技术。

评论

使用 GitHub 账号留言,讨论将同步为仓库 Issues