skip to main content
10.1145/3236454.3236509acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Lattice based modularization of static analyses

Authors Info & Claims
Published:16 July 2018Publication History

ABSTRACT

Static analyses which compute conceptually independent information, e.g., class immutability or method purity are typically developed as standalone, closed analyses. Complementary information that could improve the analyses is either ignored by making a sound over-approximation or it is also computed by the analyses, but at a rudimentary level. For example, an immutability analysis requires field mutability information, alias/escape information, and information about the concurrent behavior of methods to correctly classify classes like java.lang.String or java.util.BigDecimal. As a result, without properly supporting the integration of independently developed, mutually benefiting analysis, many analyses will not correctly classify relevant entities.

We propose to use explicitly reified lattices that encode the information about a source code element's properties (e.g., a method's purity or a class' immutability) as the sole interface between mutually dependent analyses. This enables the composition of multiple analyses. Our case study shows that using such an approach enables highly scalable, lightweight implementations of modularized static analyses.

References

  1. S. Arzt, S. Rasthofer, C. Fritz, E. Bodden, A. Bartel, J. Klein, Y. Le Traon, D. Octeau, and P. McDaniel. 2014. FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps (PLDI). Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. Bravenboer and Y. Smaragdakis. 2009. Strictly Declarative Specification of Sophisticated Points-to Analyses (OOPSLA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J.-D. Choi, M. Gupta, M. Serrano, V. C. Sreedhar, and S. Midkiff. 1999. Escape Analysis for Java. In OOPSLA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. P. Cousot and R. Cousot. 2014. Abstract Interpretation: Past, Present and Future (CSL-LICS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Eichberg, M. Kahl, D. Saha, M. Mezini, and K. Ostermann. 2007. Automatic Incrementalization of Prolog Based Static Analyses (PADL). Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Eichberg, M. Mezini, S. Kloppenburg, K. Ostermann, and B. Rank. 2006. Integrating and Scheduling an Open Set of Static Analyses. (ASE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Torbjörn Ekman and Görel Hedin. 2007. The Jastadd Extensible Java Compiler (OOPSLA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Finifter, A. Mettler, N. Sastry, and D. Wagner. 2008. Verifiable functional purity in Java (CCS). Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Haller, S. Geries, M. Eichberg, and G. Salvaneschi. 2016. Reactive Async: expressive deterministic concurrency (SCALA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. W. Huang and A. Milanova. 2012. ReImInfer: Method purity inference for Java (FSE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. W. Huang, A. Milanova, W. Dietl, and M. D. Ernst. 2012. ReIm & ReImInfer: Checking and inference of reference immutability and method purity (OOPSLA). Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. P. Klint, T. van der Storm, and J. J. Vinju. 2009. RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation (SCAM). Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. Kotzmann and H. Mössenböck. 2005. Escape Analysis in the Context of Dynamic Compilation and Deoptimization (VEE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Sorin Lerner, David Grove, and Craig Chambers. 2002. Composing dataflow analyses and transformations (POPL). Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ralf M. 2014. Scalable Automated Incrementalization for Real-Time Static Analyses. Ph.D. Dissertation. Technische Universität Darmstadt.Google ScholarGoogle Scholar
  16. F. Nielson, H. Nielson, and C. Hankin. 2005. Principles of Program Analysis. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Pearce. 2011. JPure: a modular purity system for Java (CC). Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. T. Reps, S. Horwitz, and M. Sagiv. 1995. Precise Interprocedural Dataflow Analysis via Graph Reachability (POPL). Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. Rodriguez and O. Lhoták. 2011. Actor-based parallel dataflow analysis (CC). Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Mooly Sagiv, Thomas Reps, and Susan Horwitz. 1996. Precise interprocedural dataflow analysis with applications to constant propagation. Theoretical Computer Science 167 (1996). Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. Späth, L. Nguyen Quang Do, K. Ali, and E. Bodden. 2016. Boomerang: Demand-Driven Flow- and Context-Sensitive Pointer Analysis for Java (ECOOP).Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Conferences
    ISSTA '18: Companion Proceedings for the ISSTA/ECOOP 2018 Workshops
    July 2018
    143 pages
    ISBN:9781450359399
    DOI:10.1145/3236454

    Copyright © 2018 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 16 July 2018

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article

    Acceptance Rates

    Overall Acceptance Rate58of213submissions,27%

    Upcoming Conference

    ISSTA '24

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader