Puppeteer is a design configuration smell detection tool for Puppet code.
- Execute the cpdRunner.sh shell script to carry out clone detection using PMD-CPD tool.
- Download the PMD tool and update the path in the shell script.
- Update the folder path where all the Puppet repositories are placed.
- Execute the script.
- Update the constant REPO_ROOT in Constants.py that represents the folder path where all the Puppet repositories are placed.
- Execute "Puppeteer.py".
Optional - Analyze Puppet repos with Puppet-Lint
- Execute puppet-lintRunner.py after setting the repo root
- Set the repo root in Puppet-lint_aggregator/PLConstants.py
- Execute PuppetLintRules.py - It will generate a consilidated summary of the analysis for all the analyzed projects.
The tool supports detection of following design configuration smells:
- Multifaceted Abstraction
- Unnecessary Abstraction
- Imperative Abstraction
- Missing Abstraction
- Insufficient Modularization
- Duplicate Block
- Broken Hierarchy
- Unstructured Module
- Dense Structure
- Deficient Encapsulation
- Weakened Modularity
You can find more details about the catalog of configuration smells here and the paper that describes the catalog and attempts to answer a few research questions concerning the configuration smells here.