Code smell is an indicator of possible problems with code maintenance. One of the approaches to code smell detection is based on rules involving code metrics. Initially those rules had been based on researchers’ intuition. The alternative is to mine them from software repositories.
The aim of the presented research is to develop a workbench that would make mining rules about code smells more reliable.
The main component of the workbench is a code smell description language named McPython (for Meta Code in Python). A smell detector defined in McPython assumes on the input a representation of the analysed code and produces a report on all the identified smells. That report is then combined with the output of issue detector (e.g., a bug detector based on the Sliwerski-Zeller algorithm) to produce a decision table.
As it comes to McPython, it is a domain specific language based the Python notation. It is a functional language extended with set expressions such as sum over a set and quantifiers. From the work done so far it follows that the language allows to define all most popular metric-based smells. As smell detectors defined in McPython work on a code model rather than the code itself (it resembles intermediate representation used by compilers), it allows to run the same smell detector on repositories of code written in different programming languages.
McPython and the workbench are in early stages of their development. Current implementation of the language can be classified as level 3 on the 9-level TRL scale.
Jerzy Nawrocki has been with the Poznan University of Technology (PUT) since 1980. He was also a visiting researcher at the University of Nijmegen (the Netherlands) and Dublin City University (Ireland). At PUT he played various managerial roles including Dean of the Faculty of Computing. Currently he is a professor and Deputy Director of the Institute of Computing Science (PUT). He is also Vice Chairman of the Committee of Informatics of the Polish Academy of Sciences and Councillor of the International Federation for Information Processing (IFIP). He obtained a few distinctions including IFIP Outstanding Service Award and Marek Car Prize.
His main area of interest is Software Engineering (he initiated the master’s degree programme in Software Engineering at PUT in 1998) but he did also some research in the fields of compiler construction, combinatorial optimization, and real-time systems.