Technical Program
  Invited Speakers
  Technical Papers
  Practitioner Reports
Educators' Symposium
Doctoral Symposium
Student Research Comp.
Turing Lecture
Social Events
Week at a Glance
Final Program (1.5M .pdf)

Find in Program


view, help

"Smell Detection for Eclipse"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps

 : Thursday Demonstrations : All Demonstrations : Thursday

Smell Detection for Eclipse

Courtyard, Demo room 1
Thursday, 10:30, 45 minutes


This event is also being given Tuesday at 11:30.

Robert Fuhrer, IBM T.J. Watson Research Center
Arnab Bhattacharyya, MIT

Demonstration number: 12

We demonstrate a new smell detection framework for Java, implemented for the Eclipse IDE (www.eclipse.org). Smells are architectural, rather than functional, flaws in software that tend to reduce maintainability, extensibility, modularity, testability, or other software quality measures. Common smells include overly-long method bodies, message chains, parallel inheritance, use of switch statements to implement polymorphic behavior, data clumps, overly specific variable types, and duplicated code. Code duplication in particular is a well-known source of maintenance problems. Because smells do not represent functional flaws, they can be remediated by behavior-preserving transformations (refactorings).

We have implemented an extensible smell detection framework in Eclipse that provides a simple Eclipse extension point for defining smell detectors, along with several basic smell detectors, including an efficient code duplication detector. Several of our smell detectors feature Eclipse quick-fix refactorings to automatically remediate smells upon the user's request. This transforms the tool from a mere problem indicator into a tool that actively assists developers in improving their code. We believe that such a facility has significant potential in educational settings, in directing a student's attention to software engineering principles while coding.

Our demonstration consists of two parts. First, we'll demonstrate some of our smell detectors on realistic source code bases (including Eclipse itself), along with their corresponding quick-fix support. Second, we'll walk through the implementation of a very simple smell detector within our framework, along with a very simple remediation.