CLI tool for quick size measure of PHP project, runs anywhere
The package is scoped and downgraded to PHP 7.2. So you can install it anywhere with any set of dependencies:
composer require tomasvotruba/lines --dev
vendor/bin/lines measure src
For short output:
vendor/bin/lines measure src --short
For json output, just add --json
:
vendor/bin/lines measure src --json
Also, you can combine them (very handy for blog posts and tweets):
vendor/bin/lines measure src --short --json
Are you looking for top 10 longest files?
vendor/bin/lines measure src --longest
↓
Longest files line count
src/Measurements.php ............................... 320
src/Console/OutputFormatter/TextOutputFormatter.php 136
src/NodeVisitor/StructureNodeVisitor.php ........... 124
src/Console/Command/MeasureCommand.php .............. 98
src/Analyser.php .................................... 92
src/DependencyInjection/ContainerFactory.php ........ 81
src/Console/OutputFormatter/JsonOutputFormatter.php . 70
src/Finder/PhpFilesFinder.php ....................... 56
src/ValueObject/TableView.php ....................... 54
src/ValueObject/TableRow.php ........................ 40
For the text output, you'll get data like these:
Filesystem count
Directories ......................................... 32
Files .............................................. 160
Lines of code count / relative
Code ................................... 15 521 / 70.9 %
Comments ................................ 6 372 / 29.1 %
Total .................................. 21 893 / 100 %
Structure count
Namespaces .......................................... 32
Classes ............................................ 134
* Constants ........................................ 91
* Methods ....................................... 1 114
Interfaces .......................................... 20
Traits ............................................... 4
Enums ................................................ 1
Functions ........................................... 36
Global constants ..................................... 0
Methods count / relative
Non-static .............................. 1 058 / 95 %
Static ..................................... 56 / 5 %
Public .................................... 875 / 78.5 %
Protected .................................. 90 / 8.1 %
Private ................................... 149 / 13.4 %
Or in a json format:
{
"filesystem": {
"directories": 10,
"files": 15
},
"lines_of_code": {
"code": 1064,
"code_relative": 95.4,
"comments": 51,
"comments_relative": 4.6,
"total": 1115
},
"structure": {
"namespaces": 11,
"classes": 14,
"class_methods": 88,
"class_constants": 0,
"interfaces": 1,
"traits": 0,
"enums": 0,
"functions": 5,
"global_constants": 3
},
"methods_access": {
"non_static": 82,
"non_static_relative": 93.2,
"static": 6,
"static_relative": 6.8
},
"methods_visibility": {
"public": 70,
"public_relative": 79.5,
"protected": 2,
"protected_relative": 2.3,
"private": 16,
"private_relative": 18.2
}
}
This tool use case is to measure your code, not the 3rd party libraries. That's why it ignores /vendor
directory by default to avoid huge false positives.
If you want to measure vendor files too, use --allow-vendor
option:
vendor/bin/lines measure vendor/rector/rector --allow-vendor