Quick Start - PhpMetrics (original) (raw)
Installation
Choose your favorite method:
ComposerDockerPharApt (Debian, Ubuntu...)Brew (OSX)PhpArch
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 :
export PATH=~/.composer/vendor/bin:$PATH
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
yaourt install phpmetrics
Usage
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 myreport/index.html
file.
Configuration
You can use a configuration file to use advanced features (like continuous integration, searches and more).
Create a 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
Continuous integration
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
configuration.
`... groups:
name: Component match: "!component!i"
name: Controller match: "!controller!i" `