  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.
