Turning Eclipse Against Itself: Finding Bugs in Eclipse Code Using Lightweight Static Analysis

While some commonly occurring error patterns in Java are addressed by static tools such as FindBugs, complex software systems are full of rules that developers must follow. These application-specific rules are often not expressed in any way other than code comments and often are not enforced, leading to hard-to-detect bugs later in the program execution. Eclipse represents one of the biggest Java projects ever created.

While surprisingly robust, Eclipse still suffers from serious bugs that lead to crashes and resource exhaustion. Eclipse is a collaborative development projects, with its core developers located across multiple continents; furthermore, hundreds of available plugins are developed by programmers with varying levels of familiarity with intricacies of Eclipse APIs, thus causing the introduction of complex application-specific bugs. Bugs addressed in this paper do not immediately exhibit themselves and are often discovered after deployment.

In this paper we describe some common error patterns in Eclipse code and propose, Checklipse, a lightweight analysis tool for finding these errors; Checklipse is implemented as an Eclipse plugin and leverages Eclipse.s JDT APIs to analyze Java code. In our experiments, we find a total of 68 likely errors in Eclipse sources that follow the error patterns described in this paper.