Be on the lookout for code smells, especially as your Puppet code base ages! The following link is a research project that describes a bunch of Puppet code smells, which is an XP (extreme programming) term meaning code issues—usually meaning either a poor design or implementation: http://www.tusharma.in/wp-content/uploads/2016/03/ConfigurationSmells_preprint.pdf
Let's quickly run through using the Puppeteer
Python-based tool used in the preceding research project:
- Ensure you have the latest Java SDK installed.
- Move to your
workspace
directory~/workspace
, and clone the following Git repository:
$ git clone https://github.com/tushartushar/Puppeteer $ cd Puppeteer
- Download the PMD tool (https://github.com/pmd/pmd ) and update the path in the shell script. PMD is an extensible static code analyzer with copy-paste-detector (CPD) built-in.
- Update the folder path where all the Puppet repositories are placed.
- Execute the
cpdRunner.sh
shell script to carry out clone detection using the PMD-CPD tool. - Update the
REPO_ROOT
constant inSmellDetector/Constants.py
, which represents the folder path where all the Puppet repositories are placed. - Execute
Puppeteer.py
. - Analyze Puppet repository with
puppet-lint
(optional). - Execute
puppet-lintRunner.py
after setting the repository root. - Set the repository root in
Puppet-lint_aggregator/PLConstants.py
. - Execute
PuppetLintRules.py
, it will generate a consolidated summary of the analysis for all the analyzed projects.