Gives metrics about PHP project and classes.
As phar archive:
wget https://github.com/Halleck45/PhpMetrics/raw/master/build/phpmetrics.phar
chmod +x phpmetrics.phar
mv phpmetrics.phar /usr/local/bin/phpmetrics
With Composer (Make sure you have ~/.composer/vendor/bin/
in your path):
php composer.phar global require 'halleck45/phpmetrics'
Do not hesitate to visit the official documentation.
The command command phpmetrics <folder or filename>
will output:
If you want to get the summary HTML report (with charts):
phpmetrics --report-html=/path/of/your/choice.html <folder or filename>
No panic : you can read the How to read the HTML report page
If you need a pure string representation of the reports in StdOut, just use
phpmetrics -q --report-xml=php://stdout <folder or filename>
Customizing the conditions of failure is very easy with the--failure-condition
option. For example:
--failure-condition="average.maintainabilityIndex < 100 or sum.loc > 10000"
With this example, PhpMetrics script returns 1 if the average of Maintainability index is lower than 100 or if the total number of lines of code is greater than 10000.
You can also work with package:
--failure-condition="My/Package1/XXXX.average.bugs > 0.35"
Remember that in PhpMetrics packages are file oriented (and not object oriented).
Conditions are evaluated with the Hoa Ruler component. Available operators are
and
, or
, xor
, not
, =
(is
as an alias), !=
, >
, >=
, <
, <=
, in
and sum
List of availables metrics is documented here.
## IDE integration
## Jenkins and CI
You'll find a complete tutorial in the documentation
You can easily export results to XML with the --report-xml
option:
phpmetrics --report-xml=/path/of/your/choice.xml <folder or filename>
You can also export results as violations (MessDetector report), in XML format with the --violations-xml
option:
phpmetrics --violations-xml=/path/of/your/choice.xml <folder or filename>
## Configuration file
You can customize configuration with the --config=<file>
option.
The file should be a valid yaml file. For example:
# file <my-config.yml>
myconfig:
# paths to explore
path:
extensions: php|inc
exclude: Features|Tests|tests
# report and violations files
logging:
report:
xml: ./log/phpmetrics.xml
html: ./log/phpmetrics.html
csv: ./log/phpmetrics.csv
violations:
xml: ./log/violations.xml
chart:
bubbles: ./log/bubbles.svg
# condition of failure
failure: average.maintenabilityIndex < 50 or sum.loc > 10000
# rules used for color
rules:
cyclomaticComplexity: [ 10, 6, 2 ]
maintenabilityIndex: [ 0, 69, 85 ]
[...]
Each rule is composed from three values.
- If
A < B < C
:A
: min,B
: yellow limit,C
: max - If
A > B > C
:A
: max,B
: yellow limit,C
: min
In order to run unit tests, please install the dev dependencies:
curl -sS https://getcomposer.org/installer | php
php composer.phar install --dev
gem install semver
Then, in order to run the test suite:
./vendor/bin/phpunit
Finally, build the phar:
make
# Author
- Jean-François Lépine <www.lepine.pro>
# License
See the LICENSE file.