Homepage
About SEG
SEG News
SEG Seminar
Research
Tools
Internal Site
People
Publication
Curriculum
Album
Hot Link
Contact SEG
SEG在面向千万行规模代码的高可扩展性静态分析系统方向取得突破

静态程序分析(static program analysis) 是指在不运行程序代码的情况下,通过对代码的执行逻辑进行分析计算,从而获得一系列程序行为信息的代码分析技术。静态程序分析作为程序设计语言以及软件工程领域的关键技术,被广泛应用于缺陷检测、安全防护、性能优化等方面。

将静态分析技术广泛应用到实践中,尤其是对现代大规模软件系统(如 Linux 操作系统、分布式大数据处理系统 Hadoop等)进行复杂高精度的静态分析仍面临重大挑战。具体来讲,高精度分析算法的高复杂度以及目标软件的超大规模代码量两方面因素,使得高精度静态分析产生高密集计算以及对内存的高消耗,进而导致静态分析的低可扩展性。

为此,左志强老师带领同学们提出一种用于大规模系统代码中流敏感和上下文敏感分析的演化图计算方法,并开发了程序分析系统Chianina。我们将流敏感分析计算形式化为演化图计算问题,并利用基于硬盘的核外计算技术来处理上下文敏感导致的内存爆炸问题。


1. Chianina设计框架

 

为了解决内存的问题,Chianina 采用了核外(out-of-core)的支持。具体来说,Chianina 会把整个的图进行分区化处理,每次去处理一部分子图的计算,依次迭代地去计算各个部分,直到最后的整个图上达到 fixed point,完成计算。为了提高计算效率,Chianina 采用了两级的并行化处理。一级是在分区上,即多个分区同时处理(整体同步并行计算模型,Bulk Synchronous Parallel Model),另一级是在每个分区内多 node 同时做计算(异步并行)。

相关成果《Chianina: An Evolving Graph System for Flow- and Context-Sensitive Analyses of Million Lines of C Code》已经发表在程序设计语言顶级会议PLDI 2021上。