Static analyzis tool for PHP : Coupling, Cyclomatic complexity, Maintainability Index, Halstead's metrics... and more !
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
is as an alias),
List of availables metrics is documented here.
You'll find a complete tutorial in the documentation
You can easily export results to XML with the
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
phpmetrics --violations-xml=/path/of/your/choice.xml <folder or filename>
You can customize configuration with the
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.maintainabilityIndex < 50 or sum.loc > 10000 # rules used for color rules: cyclomaticComplexity: [ 10, 6, 2 ] maintainabilityIndex: [ 0, 69, 85 ] [...]
Each rule is composed from three values.
A < B < C:
B: yellow limit,
A > B > C:
B: yellow limit,
In order to run unit tests, please install the dev dependencies:
curl -sS https://getcomposer.org/installer | php php composer.phar install gem install semver
Then, in order to run the test suite:
Finally, build the phar:
- Jean-François Lépine <www.lepine.pro>
See the LICENSE file.