Table of Contents

The detection of design smells (i.e., occurrences of anti-patterns and of their code smells) can be simply done in batch, programmatically. There are two possible ways.

Standalone SmellDetectionCaller

The standalone SmellDetectionCaller can be found on GitHub or BitBucket.

The Eclipse Java project 0 - SmellDetectionCaller contains the Java, class, and JAR files needed to identify occurrences of code and design smells in Java source code, Java binary class-files, or C++ source code.

The class ptidej.sad.smelldetectioncaller.SmellDetectionCaller must be modified to change the path to a folder or a JAR file in which is located the code of the program to be analysed.

The remaining Eclipse Java projects are only used to regenerate the JAR files necessary to run the class ptidej.sad.smelldetectioncaller.SmellDetectionCaller. These JAR files are in the Ptidej.jar, which contains the bare minimum code from Ptidej, and the JAR files in Ptidej_lib, which contains all the JAR supporting Ptidej.

How to Build JAR Version

  1. Execute once /SmellDetectionCaller/src/ptidej/sad/smelldetectioncaller/SmellDetectionCaller.java as launch configuration SmellDetectionCaller.
  2. Select /SmellDetectionCaller/src/ptidej/sad/smelldetectioncaller/SmellDetectionCaller.java.
  3. Export as “Java/Runnable JAR file”
    1. Select as launch configuration SmellDetectionCaller.
    2. Select as export destination 0 - SmellDetectionCaller\Ptidej.jar.
    3. Select Copy required libraries into a sub-folder next to the generated JAR.
    4. Check Save as ANT script.
    5. Select as ANT script location \0 - SmellDetectionCaller\Generate JARs.xml.

Full Ptidej SmellDetectionCaller

The complete source code and supporting JAR files of Ptidej can be found on GitHub and BitBucket.

After downloading and (re)compiling the source code, the class sad.detection.generators.SmellDetectionCaller should be modified to point the detection to the path or JAR files containing the program to be analysed. The class sad.detection.generators.SmellDetectionHelper can also be modified to select what anti-patterns and-or code smells to detect.