首页> 外文会议>Annual ACM SIGPLAN-SIGACT symposium on principles of programming languages >A Parametric Segmentation Functor for Fully Automatic and Scalable Array Content Analysis
【24h】

A Parametric Segmentation Functor for Fully Automatic and Scalable Array Content Analysis

机译:用于全自动和可扩展阵列内容分析的参数分割功能

获取原文

摘要

We introduce FunArray, a parametric segmentation abstract domain functor for the fully automatic and scalable analysis of array content properties. The functor enables a natural, painless and efficient lifting of existing abstract domains for scalar variables to the analysis of uniform compound data-structures such as arrays and collections. The analysis automatically and semantically divides arrays into consecutive non-overlapping possibly empty segments. Segments are delimited by sets of bound expressions and abstracted uniformly. All symbolic expressions appearing in a bound set are equal in the concrete. The FunArray can be naturally combined via reduced product with any existing analysis for scalar variables. The analysis is presented as a general framework, parameterized by the choices of bound expressions, segment abstractions and the reduction operator. Once the functor has been instantiated with fixed parameters, the analysis is fully automatic. We first prototyped FunArray in Arrayal to adjust and experiment with the abstractions and the algorithms to obtain the appropriate precision/ratio cost. Then we implemented it into Clousot, an abstract interpretation-based static contract checker for .NET. We empirically validated the precision and the performance of the analysis by running it on the main libraries of .NET and on its own code. We were able to infer thousands of non-trivial invariants and verify the implementation with a modest overhead (circa 1 %). To the best of our knowledge this is the first analysis of this kind applied to such a large code base, and proven to scale.
机译:我们介绍了FunArray,这是一个参数分割摘要域功能,用于全自动和阵列内容属性的全自动分析。仿函数使得自然,无痛,有效地提升现有的抽象域,用于标量变量,以分析统一的复合数据结构,例如阵列和集合。自动分析和语义地将阵列分成连续的非重叠可能空段。段由一组绑定表达式分隔,并均匀抽象。出现在绑定集中的所有符号表达式在混凝土中等于。通过减少产品可以自然地组合,具有对标量变量的任何现有分析。分析作为一般框架呈现,由绑定表达式,段抽象和减少运算符的选择参数化。一旦使用固定参数实例化了算子,分析是全自动的。我们首先在阵列中原型的FunArray进行调整和实验,并试验抽象和算法,以获得适当的精度/比率。然后我们将其实施到Clousot,这是一个基于抽象解释的静态合同检查器。我们通过在.NET的主要库上运行和自己的代码,经验证明了分析的精度和性能。我们能够推断数千个非琐碎的不变性,并以适度的开销(大约1%)验证实施。据我们所知,这是对这种大型代码基础的第一次分析,并被证明规模。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号