A toolkit for constructing type- and constraint-based program analyses

  • Alexander Aiken
  • Manuel Fähndrich
  • Jeffrey S. Foster
  • Zhendong Su
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1473)

Abstract

BANE (the Berkeley Analysis Engine) is a publicly available toolkit for constructing type- and constraint-based program analyses. We describe the goals of the project, the rationale for BANE’s overall design, some examples coded in BANE, and briefly compare BANE with other program analysis frameworks.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [AFS98]
    A. Aiken, M. Fähndrich, and Z. Su. Detecting Races in Relay Ladder Logic Programs. In Tools and Algorithms for the Construction and Analysis of Systems, 4th International Conference, TACAS’98, volume 1384 of LNCS, pages 184–200, Lisbon, Portugal, 1998. Springer.Google Scholar
  2. [AM95]
    M. Alt and F. Martin. Generation of efficient interprocedural analyzers with PAG. Lecture Notes in Computer Science, 983: 33–50, 1995.Google Scholar
  3. [And94]
    L. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Cophenhagen, May 1994.Google Scholar
  4. [Ass96]
    U. Assmann. How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems. In Proceedings of the Sixth International Conference on Compiler Construction (CC ’96), pages 121–135. Springer-Verlag, April 1996.Google Scholar
  5. [ATGL96]
    A. Adl-Tabatabai, T. Gross, and G. Lueh. Code Reuse in an Optimizing Compiler. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’96), pages 51–68, October 1996.Google Scholar
  6. [AW93]
    A. Aiken and E. Wimmers. Type Inclusion Constraints and Type Inference. In Proceedings of the 1993 Conference on Functional Programming Languages and Computer Architecture, pages 31–41, Copenhagen, Denmark, June 1993.Google Scholar
  7. [AWL94]
    A. Aiken, E. Wimmers, and T.K. Lakshman. Soft Typing with Conditional Types. In Twenty-First Annual ACM Symposium on Principles of Programming Languages, pages 163–173, January 1994.Google Scholar
  8. [CC77]
    P. Cousot and R. Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Contruction or Approximation of Fixed Points. In Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, January 1977.Google Scholar
  9. [CDG96]
    C. Chambers, J. Dean, and D. Grove. Frameworks for Intraand Interprocedural Dataflow Analysis. Technical Report 96-11-02, Department of Computer Science and Engineering, University of Washington, November 1996.Google Scholar
  10. [Coc70]
    J. Cocke. Global Common Subexpression Elimination. ACM SIGPLAN Notices, 5(7): 20–24, July 1970.CrossRefGoogle Scholar
  11. [DC96]
    M. Dwyer and L. Clarke. A Flexible Architecture for Building Data Flow Analyzers. In Proceedings of the 18th International Conference on Software Engineering (ICSE-18), Berlin, Germany, March 1996.Google Scholar
  12. [DM82]
    L. Damas and R. Milner. Principle Type-Schemes for Functional Programs. In Ninth Annual ACM Symposium on Principles of Programming Languages, pages 207–212, January 1982.Google Scholar
  13. [EST95]
    J. Eifrig, S. Smith, and V. Trifonov. Sound Polymorphic Type Inference for Objects. In OOPSLA ’95, pages 169–184, 1995.Google Scholar
  14. [FA96]
    M. Fähndrich and A. Aiken. Making Set-Constraint Based Program Analyses Scale. In First Workshop on Set Constraints at CP’96, Cambridge, MA, August 1996. Available as Technical Report CSD-TR-96-917, University of California at Berkeley.Google Scholar
  15. [FA97]
    M. Fähndrich and A. Aiken. Program Analysis Using Mixed Term and Set Constraints. In Proceedings of the 4th International Static Analysis Symposium, pages 114–126, 1997.Google Scholar
  16. [FFA97]
    J. Foster, M. Fähndrich, and A. Aiken. Flow-Insensitive Points-to Analysis with Term and Set Constraints. Technical Report UCB//CSD-97-964, University of California, Berkeley, July 1997.Google Scholar
  17. [FFA98]
    M. Fähndrich, J. Foster, and A. Aiken. Tracking down Exceptions in Standard ML Programs. Technical Report UCB/CSD-98-996, EECS Department, UC Berkeley, February 1998.Google Scholar
  18. [FFK+96]
    C. Flanagan, M. Flatt, S. Krishnamurthi, S. Weirich, and M. Felleisen. Catching Bugs in the Web of Program Invariants. In Proceedings of the 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 23–32, May 1996.Google Scholar
  19. [FFSA98]
    M. Fähndrich, J. Foster, Z. Su, and A. Aiken. Partial Online Cycle Elimination in Inclusion Constraint Graphs. In Proceedings of the ACM SIGPLAN ’98 Conference on Programming Language Design and Implementation, 1998.Google Scholar
  20. [GJSO92]
    D. Gifford, P. Jouvelot, M. Sheldon, and J. O’Toole. Report on the FX-91 Programming Language. Technical Report MIT/LCS/TR-531, Massachusetts Institute of Technology, February 1992.Google Scholar
  21. [Hei94]
    N. Heintze. Set Based Analysis of ML Programs. In Proceedings of the 1994 ACM Conference on LISP and Functional Programming, pages 306–17, June 1994.Google Scholar
  22. [Hen92]
    F. Henglein. Global Tagging Optimization by Type Inference. In Proceedings of the 1992 ACM Conference on Lisp and Functional Programming, pages 205–215, July 1992.Google Scholar
  23. [HM97]
    N. Heintze and D. McAllester. Linear-Time Subtransitive Control Flow Analysis. In Proceedings of the 1997 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 1997.Google Scholar
  24. [HMCCR93]
    M. Hall, J. Mellor-Crummey, A. Carle, and R. Rodriguez. FIAT: A Framework for Interprocedural Analysis and Transformation. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Proceedings of the 6th International Workshop on Parallel Languages and Compilers, pages 522–545, Portland, Oregon, August 1993. Springer-Verlag.Google Scholar
  25. [Kil73]
    G. A. Kildall. A Unified Approach to Global Program Optimization. In ACM Symposium on Principles of Programming Languages, pages 194–206, Boston, MA, October 1973. ACM, ACM.Google Scholar
  26. [KU76]
    J. Kam and J. Ullman. Global Data Flow Analysis and Iterative Algorithms. Journal of the ACM, 23(1): 158–171, January 1976.MATHMathSciNetCrossRefGoogle Scholar
  27. [Mos96]
    Christian Mossin. Flow Analysis of Typed Higher-Order Programs. PhD thesis, DIKU, Department of Computer Science, University of Copenhagen, 1996.Google Scholar
  28. [MTH90]
    Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.Google Scholar
  29. [Rém89]
    D. Rémy. Typechecking records and variants in a natural extension of ML. In Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 60–76, January 1989.Google Scholar
  30. [Ste96]
    B. Steensgaard. Points-to Analysis in Almost Linear Time. In Proceedings of the 23rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 32–41, January 1996.Google Scholar
  31. [TH92]
    S. Tjiang and J. Hennessy. Sharlit — A tool for building optimizers. In Proceedings of the ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation, pages 82–93, July 1992.Google Scholar
  32. [TT94]
    M. Tofte and J.-P. Talpin. Implementation of the Typed Call-by-Value λ-Calculus using a Stack of Regions. In Twenty-First Annual ACM Symposium on Principles of Programming Languages, pages 188–201, 1994.Google Scholar
  33. [Ven89]
    G. A. Venkatesh. A framework for construction and evaluation of high-level specifications for program analysis techniques. In Proceedings of the ACM SIGPLAN ’89 Conference on Programming Language Design and Implementation, pages 1–12, 1989.Google Scholar
  34. [YH93]
    K. Yi and W. Harrison, III. Automatic Generation and Management of Interprocedural Program Analyses. In Proceedings of the Twnetieth Annual ACM Symposium on Principles of Programming Languages, pages 246–259, January 1993.Google Scholar

Copyright information

© Springer-Verlag 1998

Authors and Affiliations

  • Alexander Aiken
    • 1
  • Manuel Fähndrich
    • 1
  • Jeffrey S. Foster
    • 1
  • Zhendong Su
    • 1
  1. 1.Electrical Engineering and Computer Science DepartmentUniversity of California, BerkeleyBerkeley

Personalised recommendations