Building a Whole-Program Type Analysis in Eclipse

Slides:



Advertisements
Similar presentations
ASSUMPTION HIERARCHY FOR A CHA CALL GRAPH CONSTRUCTION ALGORITHM JASON SAWIN & ATANAS ROUNTEV.
Advertisements

Generating Run-Time Progress Reports for a Points-to Analysis in Eclipse Jason Sawin, Mariana Sharp, Atanas Rountev Ohio State University.
Optimizations for a Simulator Construction System Supporting Reusable Components David A. Penry and David I. August The Liberty Architecture Research Group.
Software Development in B A B AR Neil Geddes Rutherford Appleton Laboratory.
LeakChaser: Helping Programmers Narrow Down Causes of Memory Leaks Guoqing Xu, Michael D. Bond, Feng Qin, Atanas Rountev Ohio State University.
Reference Book: Modern Compiler Design by Grune, Bal, Jacobs and Langendoen Wiley 2000.
Direction of analysis Although constraints are not directional, flow functions are All flow functions we have seen so far are in the forward direction.
For more Lectures and Notes Visit
Honors 101, Fall 2006 Please do not sit in back of room! Lots of info on web page Join the mailing list Download Eclipse and start using it Read the text.
L EC. 01: J AVA FUNDAMENTALS Fall Java Programming.
G RID R ESOURCE BROKER FOR SCHEDULING COMPONENT - BASED APPLICATIONS ON DISTRIBUTED RESOURCES Reporter : Yi-Wei Wu.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
GAP- Generating Access Permissions IJAZ AHMED advised by : NESTOR CATANO
Exploiting Domain-Specific High-level Runtime Support for Parallel Code Generation Xiaogang Li Ruoming Jin Gagan Agrawal Department of Computer and Information.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University STATIC ANALYSES FOR JAVA IN THE PRESENCE OF DISTRIBUTED COMPONENTS AND.
PRESTO Research Group, Ohio State University Interprocedural Dataflow Analysis in the Presence of Large Libraries Atanas (Nasko) Rountev Scott Kagan Ohio.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Oracle HTMLDB introduction IT-AIS-HR Giovanni Chierico 1/16 Oracle HTMLDB introduction CERN Oracle Developers Forum: May 12 th 2005.
XIP™ – the eXtensible Imaging Platform A rapid application development and deployment platform Lawrence Tarbox, Ph.D. September, 2010.
Programming 1 1. Introduction to object oriented programming and problem-solving.
Understanding Parallelism-Inhibiting Dependences in Sequential Java Programs Atanas (Nasko) Rountev Kevin Van Valkenburgh Dacong Yan P. Sadayappan Ohio.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Coverage Criteria for Testing of Object Interactions in Sequence Diagrams Atanas (Nasko) Rountev Scott Kagan Jason Sawin Ohio State University.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Rethinking Soot for Summary-Based Whole- Program Analysis PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Dacong Yan.
Taming Development and Data Chaos in Military Logistics: The ICIS Experience With Lightweight Languages Gary Kratkiewicz BBN Technologies Geoffrey Knauth.
CBSE'051 Component-Level Dataflow Analysis Atanas (Nasko) Rountev Ohio State University.
Weaving a Debugging Aspect into Domain-Specific Language Grammars SAC ’05 PSC Track Santa Fe, New Mexico USA March 17, 2005 Hui Wu, Jeff Gray, Marjan Mernik,
Estimating the Run-Time Progress of a Call Graph Construction Algorithm Jason Sawin, Atanas Rountev Ohio State University.
Detecting Inefficiently-Used Containers to Avoid Bloat Guoqing Xu and Atanas Rountev Department of Computer Science and Engineering Ohio State University.
5/7/03ICSE Fragment Class Analysis for Testing of Polymorphism in Java Software Atanas (Nasko) Rountev Ohio State University Ana Milanova Barbara.
Sept 12ICSM'041 Precise Identification of Side-Effect-Free Methods in Java Atanas (Nasko) Rountev Ohio State University.
R-Verify: Deep Checking of Embedded Code James Ezick † Donald Nguyen † Richard Lethin † Rick Pancoast* (†) Reservoir Labs (*) Lockheed Martin The Eleventh.
Abdul Rahim Ahmad MITM 613 Intelligent System Chapter 10: Tools.
Object Naming Analysis for Reverse- Engineered Sequence Diagrams Atanas (Nasko) Rountev Beth Harkness Connell Ohio State University.
ICS312 Introduction to Compilers Set 23. What is a Compiler? A compiler is software (a program) that translates a high-level programming language to machine.
.NET and Webservices for Dummies Speaker: John J. Stark System Consultant, Integral Data Solutions.
1PLDI 2000 Off-line Variable Substitution for Scaling Points-to Analysis Atanas (Nasko) Rountev PROLANGS Group Rutgers University Satish Chandra Bell Labs.
Java State Explorer by: Richard Sherman Stephanie Taylor.
Architecture of a platform for innovation and research Erik Deumens – University of Florida SC15 – Austin – Nov 17, 2015.
The PLA Model: On the Combination of Product-Line Analyses 강태준.
The Holmes Platform and Applications
Introduction to Oracle Forms Developer and Oracle Forms Services
CSC 222: Object-Oriented Programming
Static Analysis of Object References in RMI-based Java Software
Efficient Evaluation of XQuery over Streaming Data
Current Generation Hypervisor Type 1 Type 2.
Chapter 1 Introduction.
Atanas (Nasko) Rountev Ohio State University
Introduction to Oracle Forms Developer and Oracle Forms Services
Introduction to Advanced Java Programming
An Introduction to the IVC Software Framework
Oracle HTMLDB introduction
Introduction to Oracle Forms Developer and Oracle Forms Services
Software Design and Architecture
Supplier Recovery Claim Automation
Chapter 1 Introduction.
Atanas (Nasko) Rountev Barbara G. Ryder Rutgers University
Points-to Analysis for Java Using Annotated Constraints
Survey Paper & Manuscript
Meng Cao, Xiangqing Sun, Ziyue Chen May 28th, 2014
Komponentbasert utvikling Den sanne objektorientering
Chapter 7 –Implementation Issues
Interactive Exploration of Reverse-Engineered UML Sequence Diagrams
Jason Sawin, Atanas Rountev Ohio State University
C++/Java/COM Interoperability
Implementation Plan system integration required for each iteration
Presentation transcript:

Building a Whole-Program Type Analysis in Eclipse Mariana Sharp, Jason Sawin, Atanas (Nasko) Rountev Ohio State University Supported by an IBM Eclipse Innovation Grant

Eclipse as a Platform for Static Analysis Research Off-the-shelf infrastructure Parsing, intermediate representation, etc. Analysis comparison: apples-to-apples Analysis integration: exploit synergies Realistic analyses: no cutting of corners Challenging issues of integration Technology transfer Real-world impact of the research Nasko Rountev - ETX'05

Building a Static Analysis Infrastructure Challenge: easy-to-use implementations of popular static analyses Type analysis, call graph construction, side effect analysis, dependence analysis, etc. Analysis implementations: simple interfaces + sophisticated implementations Researchers and developers should think of them as parts of the infrastructure Similarly to the Java compiler, AST builder, … If you claim you are an expert in a particular static analysis, create a public plug-in for it! Nasko Rountev - ETX'05

TACLE = type analysis and call graph construction for Eclipse The TACLE Project TACLE = type analysis and call graph construction for Eclipse Download at presto.cse.ohio-state.edu/tacle ICallGraphAnalysis analysis = … IMethod main = … analysis.run(main); Set methods = analysis.getReachableMethods(); for (Iterator i = methods.iterator(); i.hasNext();) { IMethod m = (IMethod) i.next(); Set callees = analysis.getCalledMethods(m); … Nasko Rountev - ETX'05

Design Goals for Static Analyses Both for TACLE and for other analyses in Eclipse Careful handling of library code Continuous re-computation of analysis solution Upon every successful re-compilation? Work in the background, exploit free cycles Analysis of partial programs Source code analysis Use ASTs as the analysis input Nasko Rountev - ETX'05

Whole-Program Rapid Type Analysis Current implementation of TACLE Rapid Type Analysis (RTA) In the future, add points-to analysis Whole-program RTA Start from main; compute the set of reachable methods and instantiated types Simple implementation Every time a method becomes reachable, construct the AST of the surrounding class or look it up if already constructed AST traversal for method body Nasko Rountev - ETX'05

Methods in the Whole-Program Call Graph Nasko Rountev - ETX'05

Whole-Program vs. Summary-Based Analysis Problem: running time and memory use AST building and analysis for library code Problem: unavailability of source code e.g. parts of the standard libraries in Sun’s J2SE 1.4.2 do not have public source code Solution: pre-computed library summary information; reused many times One-time summary generation cost Part of plug-in distribution; or, computed in the user’s environment at deployment Nasko Rountev - ETX'05

Whole-Program vs. Summary-Based RTA in TACLE Nasko Rountev - ETX'05

Whole-Program vs. Summary-Based RTA in TACLE Nasko Rountev - ETX'05

Conclusions and Future Work If you are building a whole-program analysis in Eclipse, consider using summary information about the standard libraries Avoid AST building; pre-compute some results TACLE goals incomplete call graph and type information points-to analysis using summary info side-effect analysis using summary info summary info for library components other than the standard libraries continuous analyses on the background analysis of partial programs (no main) Nasko Rountev - ETX'05