# Machine Learning-Based Methods for Code Smell Detection: A Survey
## Appendix A
\begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Article No.** & **Tools/ Tech.** & **Smells** & **Algorithm** & **Performance Metrics** \\ \hline \multirow{2}{*}{ARTN1} & \multirow{2}{*}{IYC} & Delegator, Lazy Class, Long Method, Feature & \multirow{2}{*}{C4.5, Decision Tree} & \multirow{2}{*}{Accuracy} \\  & & Envy, God Class & & \\ \hline ARTN2 & \multirow{2}{*}{Bayesian approach} & \multirow{2}{*}{Blob} & Bayesian Belief Networks & Precision, Recall, \\ \hline ARTN3 & \multirow{2}{*}{NA} & \multirow{2}{*}{God Class} & Naive Bayes & Precision, Recall \\ \hline ARTN4 &
\begin{tabular}{c} ABS (antipattern \\ identification using \\ B-Splines) \\ \end{tabular} & \multirow{2}{*}{Blob} & \multirow{2}{*}{Bspl} & \multirow{2}{*}{Precision, Recall} \\ \cline{1-1} \cline{5-5}  & IDS (Immune-based \\ \cline{1-1} \cline{5-5} ARTN5 & Detection Strategy), based on & & \\ \cline{1-1} \cline{5-5}  & Artificial Immune Systems & & \\ \hline \hline \end{tabular}
\end{table} 
Table 4: The study’s analysis—smells, tools, algorithm, and evaluation metrics information. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Article No. ** & **Tools/ Tech. ** & **Smells** & **Algorithm** & **Performance Metrics** \\ \hline ARTN6 & Metrics collection tool & Long Method & Eclipse Plugin Binary Logistic Regression (BLR) & Accuracy \\ \hline ARTN7 & A methodology for predicting bad smells from the software design model & Feature Envy, Message Chain, Long Method, Switch Statement, Middle Man, Long Parameter List, and Lazy Class & Random Forest, J48, Naive Bayes, Logistic, Intervals, and IBk & Hypothesis test, the predictive value of tests, prediction accuracy, and sensitivity and specificity \\ \hline ARTN8 & A GQM-based approach, BDTEX & Blob, Functional Decomposition, and Spaghetti Code & Bayesian Belief Networks & Precision, Recall, and utility \\ \hline ARTN9 & BSDT (BAD SMELL DETECTING TOOL) & Long Method, Switch Statement, Long Parameter List, Parallel Inheritance Hierarchy, Lazy Class, Large Class, and Data Class & A Switch Statement Rules, Naive Bayes & Accuracy \\ \hline ARTN10 & Code clone detection tools & Duplicate Code & Bayesian Network & Precision, Recall, Effectiveness \\ \hline ARTN11 & Support Vector Machine direct & Functional Decomposition, Spaghetti Code, and SAK & SVM & Precision, Recall \\ \hline ARTN12 & SMURF & Blob, Spaghetti Code, Functional Decomposition, and Swiss Army Knife & SVM & Precision, Recall \\ \hline ARTN13 & HIST & Feature Envy, Shotgun Surgery, Blob, Parallel Inheritance Hierarchy, Divergent Change & Association Rule Mining & Precision, Recall, F-measure \\ \hline ARTN14 & HIST & Blob, Divergent Change, Parallel Inheritance Hierarchy, Shotgun Surgery, and Feature Envy & Association Rule Mining & Precision, Recall, F-measure \\ \hline ARTN15 & Code smell detection tool, Weka tool & Data Class, Feature Envy, God Class, and Long Method & LibSVM, J48, Sequential minimal optimization, JRip, Random Forest, Naive Bayes & Accuracy, F-measure, ROC \\ \hline ARTN16 & NA & Duplicate Code, Switch Statement, and Divergent Change & Association Rule Mining & Precision, Recall, and F-measure \\ \hline ARTN17 & Decision Tree (C5.0) & Antisingleton, Message Chain, Long Parameter List, Class Data should be Private, Lazy Class, Swiss Army Knife, God Class & SVM, Bayesian Belief Networks & Precision, Recall, F-measure \\ \hline ARTN18 & Clone detection tools (CDTs) & Duplicated Code & Bayesian Network & Precision, Recall, Accuracy \\ \hline ARTN19 & A GQM-based approach, BDTEX & Blob, Functional Decomposition, and Spaghetti Code & A. G.