Towards Triaging Code-Smell Candidates via Runtime Scenarios and Method-Call Dependencies
Managing technical debt includes the detection and assessment of debt at the code and design levels (such as bad smells). Existing approaches and tools for smell detection primarily use static program data for decision support. While a static analysis allows for generating smell candidates without executing and instrumenting the system, such approaches also come with the risk of missing candidates or detecting false candidates. Moreover, alleged smell candidates might result from a deliberate design decision (e.g., of applying a particular design pattern). Such risks and the general ambivalence of smell detection require a manual design and/or code inspection for reviewing all alleged smell candidates.
In this paper, we propose an approach to obtain tailorable design documentation for object-oriented systems based on runtime tests. In particular, the approach supports a tool-supported triaging of code-smell candidates. We use runtime scenario tests to extract relevant execution traces. Based on these execution traces, different (automatically derived) model perspectives on method-call dependencies (e.g., dependency structure matrices, DSMs; UML2 sequence diagrams) are then used as decision support for assessing smell candidates. Our approach is implemented as part of the KaleidoScope tool which is publicly available for download.
T. Händler, S. Sobernig, M. Strembeck, Towards Triaging Code-Smell Candidates via Runtime Scenarios and Method-Call Dependencies, in: Proc. of the 9th International Workshop on Managing Technical Debt (MTD), Cologne (May 2017)