Change-based Code Metrics and Smells

Printer-friendly version
Info
Prerequisites: 
  • Declarative Programming
  • Functional Programming
  • Java
  • Clojure / Scheme
  • git
Context: 

Software metrics provide a means to define a quality on software code. Examples of such metrics are the number of lines of code of a file, the coupling of a class (how connected is it with the rest of the system), the cyclomatic complexity etc. These metrics are computed using the source code of a software project. Code smells are patterns in source code that may indicate an underlying (design) problem. Examples of such smells are feature envy, duplicated code, a god class or too long methods. Code smells are also computed using the source code of a software project.

Source Code Changes are a low-level description of how the source code of a software project has evolved. They describe operations that a developer has performed on the level of the Abstract Syntax Tree (AST). Such an operations can be an insert, a move, an update of the value or the removal of a node. These source code changes can either be recorded during the development phase of the software project by installing a change logger in the IDE of the developer, or can be distilled algorithmically.

Goal & Research Activities: 

In this thesis we are interested in exploring whether we can define change-based metrics and smells, or find a relation between existing metrics and smells and the changes made to the affected files. To this end, the datasets provided by existing studies can be consulted in order to detect whether a change-based approach can be used to calculate metrics and to detect smells.