Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

CLI tool for quick size measure of PHP project, runs anywhere

License

NotificationsYou must be signed in to change notification settings

TomasVotruba/lines

Repository files navigation

CLI tool for quick size measure of PHP project, runs anywhere

What are killer features?

  • install anywhere - PHP 7.2? PHPUnit 6? Symfony 3? Not a problem, this packagehas zero dependencies and works on PHP 7.2+
  • get quick overview of your project size - no details, no complexity, just lines of code
  • get easy JSON output for further processing
  • we keep it simple, so you can enjoy reading - for more complex operation use static analysis like PHPStan

Install

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

Usage

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

The Measured Items

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    }}

Vendor file scanning

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

[8]ページ先頭

©2009-2025 Movatter.jp