Static Analysis for Java in Eclipse |
||
Abstract |
Eclipse (http://www.eclipse.org)
is one of the most popular Integrated Development Environments (IDE's),
thanks in part to its open-source distribution, its portability, an advanced
feature set, and a mature Java development tool chain. Eclipse also provides
stable API's for representing and manipulating Java programs, with support
for the latest language features in Java 5.0. Moreover, it has at its core
a powerful plug-in extension mechanism, allowing developers to extend the
environment with tools, views, and analyses to suit specific needs.
At the same time, the sheer size of the Eclipse API's and their complexity make for a daunting learning curve. As a result, in spite of being an ideal platform for hosting both commercial and experimental Java analyses and tools, as of yet few programming researchers have implemented their analyses in Eclipse. To help bridge this gap between potential and reality, this four-hour tutorial will give participants insight into several important aspects of developing static analyses within the Eclipse IDE and exposing their results to users.
|
|
Target Audience |
Researchers and practitioners interested in implementing static analyses
and tools in the setting of a realistic IDE such as the Eclipse environment
Prerequisites:
|
|
Detailed description |
Part I: Eclipse Overview (1 hour)The purpose of this part of the tutorial is to give the participant a feel for the basic flow of plug-in development in general, how to hook into the user interface to trigger analyses and present analysis results, and, most significantly, to describe the core Eclipse Java Development Toolkit (JDT) API's. Topics to be covered:
Part II: Use/Def Chains (1.5 hours)In this part of the tutorial, we'll build an end-to-end solution for displaying and navigating use-def/def-use (UD-/DU-) chains to the developer on demand. Using this facility, the user can, e.g., select a variable reference and hit a keystroke, and its reaching definitions are highlighted. We'll walk through a partial implementation of the algorithm, add the missing pieces, and debug it in action in a real Eclipse run-time workbench. Topics to be covered:
Part III: Type Analysis (1.5 hours)In Part III, we'll walk through the implementation of a type analysis algorithm to detect “overly-specific variables”, show its encapsulation as a “smell detector” extension in a simple framework, and finally implement a simple remediating refactoring/quick-fix using the Eclipse JDT. Topics to be covered:
|
Robert M. Fuhrer |
Biography:Since receiving his B.S.E. in Electrical Engineering from Princeton University in 1984, Dr. Fuhrer has been developing tools for designing and implementing hardware and software, including hardware/software codesign and cosimulation, high-speed logic simulation, and combinational verification. He received a PhD in Computer Science from Columbia University in 1999 for his work on synthesis, optimization and verification of asynchronous circuits. Since then, Robert has worked in IBM's Research Division on programming technologies, including static analysis, refactoring, and visual programming languages. Robert has written Eclipse plug-ins, including encapsulations for JavaCC and ESC/Java, and a smell detection framework. He has worked with the Eclipse JDT/UI team in Zurich on advanced refactorings over the last two years, and is the co-author of several refactorings. |
|
|
Research Staff Member
|
![]() |
|