Deep Learning Anti-patterns from Code Metrics History

10/17/2019
by   Antoine Barbez, et al.
0

Anti-patterns are poor solutions to recurring design problems. Number of empirical studies have highlighted the negative impact of anti-patterns on software maintenance which motivated the development of various detection techniques. Most of these approaches rely on structural metrics of software systems to identify affected components while others exploit historical information by analyzing co-changes occurring between code components. By relying solely on one aspect of software systems (i.e., structural or historical), existing approaches miss some precious information which limits their performances. In this paper, we propose CAME (Convolutional Analysis of code Metrics Evolution), a deep-learning based approach that relies on both structural and historical information to detect anti-patterns. Our approach exploits historical values of structural code metrics mined from version control systems and uses a Convolutional Neural Network classifier to infer the presence of anti-patterns from this information. We experiment our approach for the widely known God Class anti-pattern and evaluate its performances on three software systems. With the results of our study, we show that: (1) using historical values of source code metrics allows to increase the precision; (2) CAME outperforms existing static machine-learning classifiers; and (3) CAME outperforms existing detection tools.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/29/2019

A Machine-learning Based Ensemble Method For Anti-patterns Detection

Anti-patterns are poor solutions to recurring design problems. Several e...
research
03/31/2021

Investigating Design Anti-pattern and Design Pattern Mutations and Their Change- and Fault-proneness

During software evolution, inexperienced developers may introduce design...
research
09/22/2020

DeepIaC: Deep Learning-Based Linguistic Anti-pattern Detection in IaC

Linguistic anti-patterns are recurring poor practices concerning inconsi...
research
12/23/2022

RMove: Recommending Move Method Refactoring Opportunities using Structural and Semantic Representations of Code

Incorrect placement of methods within classes is a typical code smell ca...
research
12/11/2021

The Past as a Stochastic Process

Historical processes manifest remarkable diversity. Nevertheless, schola...
research
12/24/2018

Feature Maps: A Comprehensible Software Representation for Design Pattern Detection

Design patterns are elegant and well-tested solutions to recurrent softw...
research
12/29/2022

Cross Version Defect Prediction with Class Dependency Embeddings

Software Defect Prediction aims at predicting which software modules are...

Please sign up or login with your details

Forgot password? Click here to reset