phploc
is a tool for quickly measuring the size and analyzing the structure of a PHP project.
The easiest way to obtain PHPLOC is to download a PHP Archive (PHAR) that has all required dependencies of PHPLOC bundled in a single file:
wget https://phar.phpunit.de/phploc.phar
chmod +x phploc.phar
mv phploc.phar /usr/local/bin/phploc
You can also immediately use the PHAR after you have downloaded it, of course:
wget https://phar.phpunit.de/phploc.phar
php phploc.phar
Simply add a dependency on phploc/phploc
to your project's composer.json
file if you use Composer to manage the dependencies of your project. Here is a minimal example of a composer.json
file that just defines a development-time dependency on PHPLOC:
{
"require-dev": {
"phploc/phploc": "*"
}
}
For a system-wide installation via Composer, you can run:
composer global require 'phploc/phploc=*'
Make sure you have ~/.composer/vendor/bin/
in your path.
➜ ~ phploc src
phploc 2.0.4 by Sebastian Bergmann.
Directories 3
Files 8
Size
Lines of Code (LOC) 1858
Comment Lines of Code (CLOC) 560 (30.14%)
Non-Comment Lines of Code (NCLOC) 1298 (69.86%)
Logical Lines of Code (LLOC) 289 (15.55%)
Classes 260 (89.97%)
Average Class Length 37
Average Method Length 9
Functions 5 (1.73%)
Average Function Length 5
Not in classes or functions 24 (8.30%)
Complexity
Cyclomatic Complexity / LLOC 0.67
Cyclomatic Complexity / Number of Methods 7.86
Dependencies
Global Accesses 2
Global Constants 2 (100.00%)
Global Variables 0 (0.00%)
Super-Global Variables 0 (0.00%)
Attribute Accesses 48
Non-Static 48 (100.00%)
Static 0 (0.00%)
Method Calls 96
Non-Static 91 (94.79%)
Static 5 (5.21%)
Structure
Namespaces 4
Interfaces 0
Traits 0
Classes 7
Abstract Classes 0 (0.00%)
Concrete Classes 7 (100.00%)
Methods 28
Scope
Non-Static Methods 28 (100.00%)
Static Methods 0 (0.00%)
Visibility
Public Method 10 (35.71%)
Non-Public Methods 18 (64.29%)
Functions 1
Named Functions 0 (0.00%)
Anonymous Functions 1 (100.00%)
Constants 1
Global Constants 1 (100.00%)
Class Constants 0 (0.00%)
➜ ~ phploc --log-csv log.csv --progress --git-repository . src
phploc 2.0.4 by Sebastian Bergmann.
295/295 [============================] 100%
By using --separate
option, you can analyse multiple directories and output their results separately, which are normally merged together. This option will let you output one CSV or XML file, with each directory you provided represented as a separate entity.
➜ ~ phploc ~/web_project ~/cli_project --separate --log-csv results.csv
phploc 2.0.4 by Sebastian Bergmann.
Project Directory ~/web_project
Directories 3
Files 8
Size
Lines of Code (LOC) 1858
Comment Lines of Code (CLOC) 560 (30.14%)
Non-Comment Lines of Code (NCLOC) 1298 (69.86%)
.....
Project Directory ~/cli_project
Directories 2
Files 9
Size
Lines of Code (LOC) 1858
Comment Lines of Code (CLOC) 560 (30.14%)
Non-Comment Lines of Code (NCLOC) 1298 (69.86%)
.....