Choose your favorite method:
composer global require 'phpmetrics/phpmetrics'
Please note that the ~/.composer/vendor/bin directory must be in your $PATH. For example in your ~/.bash_profile (or ~/.bashrc), add :
docker run --rm --volume `pwd`:/project herloct/phpmetrics [<options>]
curl -L "https://github.com/phpmetrics/PhpMetrics/blob/master/releases/phpmetrics.phar?raw=true" -o phpmetrics.phar chmod +x phpmetrics.phar && mv phpmetrics.phar /usr/local/bin/phpmetrics
curl -L "https://github.com/phpmetrics/PhpMetrics/blob/master/releases/phpmetrics.deb?raw=true" -o phpmetrics.deb dpkg -i phpmetrics.deb
brew install phpmetrics
yaourt install phpmetrics
Run PHPMetrics with the following command:
php ./vendor/bin/phpmetrics --report-html=myreport <folder-to-analyze>
You'll get a CLI output with summary of analysis, and detailled report in
You can use a configuration file to use advanced features (like continuous integration, searches and more).
config.yml file in the root of your project (you can also use JSON or INI files if you want).
--- includes: - "src" report: html: "/tmp/report/" json: "/tmp/report.json" violations: "/tmp/violations.xml" plugins: git: binary: git
You can search for patterns in your code, with the
searches configuration. Enable the
failIfFound flag to fail your build if a pattern is found.
For example, if you want to fail if a Repository uses a Service, or if you have to complexe code:
... searches: Repository which uses Service: type: class instanceOf: - App\MyRepository nameMatches: ".*Repository.*" usesClasses: - ".*Service" failIfFound: true Class with too complex code: type: class ccn: ">=10" failIfFound: true
Groups of code
Sometimes you want to analyze a group of code (for example your controllers).
You can do this with the
... groups: - name: Component match: "!component!i" - name: Controller match: "!controller!i"