paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Concerto: a framework for combined concrete and abstract interpretation

Concerto:一种具体解释与抽象解释相结合的框架
POPL 3(POPL)2019匹配度 3/10 · 论文属于静态分析与抽象解释的基础方法工作,理论上与PL方向相关,但未涉及LLM/Agent、ML系统、浮点程序分析或贝叶斯程序分析等用户当前核心交叉方向。引用 13 inbox
John Toman, Dan Grossman
crossref: 2026-09-10

AI 速览

一句话:提出Concerto,通过具体解释分析框架实现、抽象解释分析应用代码,提升框架程序静态分析精度。

现代框架广泛使用反射与元编程,使抽象解释难以既可靠又精确;手动建模虽精确但代价高。Concerto针对基于框架的应用,混合具体解释与抽象解释:利用分析时可得的具体配置,具体执行框架实现以精确解析反射等元编程惯用法;对路径无穷的应用代码则切换为抽象解释。该框架可与满足少量前置条件的任意抽象解释实例结合,且不绑定特定框架。作者形式化方法并证明可靠性、终止性等性质,并面向Java子集实现原型;结果显示混合解释显著提升了分析精度与性能。

问题
框架大量使用反射和元编程,使现有抽象解释器难以在保证可靠性的同时保持精度,而不可靠地忽略这些特性又不可接受。
方法
Concerto用具体解释分析框架实现,用抽象解释分析应用代码,并借助分析时可得的应用特定配置精确解析反射等元编程,可实例化到满足前置条件的任意抽象解释。
评估
作者形式化方法并证明可靠性、终止性等性质,面向Java子集实现概念验证原型,发现混合解释显著提升了分析精度与性能。
原文摘要(Abstract)

Abstract interpretation promises sound but computable static summarization of program behavior. However, modern software engineering practices pose significant challenges to this vision, specifically the extensive use of frameworks and complex libraries. Frameworks heavily use reflection, metaprogramming, and multiple layers of abstraction, all of which confound even state-of-the-art abstract interpreters. Sound but conservative analysis of frameworks is impractically imprecise, and unsoundly ignoring reflection and metaprogramming is untenable given the prevalence of these features. Manually modeling framework behaviors offers excellent precision, at the cost of immense effort by the tool designer. To overcome the above difficulties, we present Concerto, a system for analyzing framework-based applications by soundly combining concrete and abstract interpretation. Concerto analyzes framework implementations using concrete interpretation, and application code using abstract interpretation. This technique is possible in practice as framework implementations typically follow a single path of execution when provided a concrete, application-specific configuration file which is often available at analysis time. Concerto exploits this configuration information to precisely resolve reflection and other metaprogramming idioms during concrete execution. In contrast, application code may have infinitely many paths of execution, so Concerto switches to abstract interpretation to analyze application code. Concerto is an analysis framework, and can be instantiated with any abstract interpretation that satisfies a small set of preconditions. In addition, unlike manual modeling, Concerto is not specialized to any specific framework implementation. We have formalized our approach and proved several important properties including soundness and termination. In addition, we have implemented an initial proof of concept prototype of Concerto for a subset of Java, and found that our combined interpretation significantly improves analysis precision and performance.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot691,
  title = {Concerto: a framework for combined concrete and abstract interpretation},
  author = {John Toman and Dan Grossman},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3290356}
}