测量PHP项目的大小

0.6.0 2024-07-12 09:18 UTC

README

CLI工具,用于快速测量PHP项目大小,可在任何地方运行

有哪些杀手级功能?

  • 安装任何地方 - PHP 7.2?PHPUnit 6?Symfony 3?没问题,此包无依赖项,支持PHP 7.2+
  • 快速了解项目大小 - 没有细节,没有复杂性,只有代码行数
  • 获取易于处理的JSON输出
  • 我们使之简单,让您享受阅读 - 对于更复杂的操作,请使用如PHPStan之类的静态分析

安装

该包已指定作用域,并降级到PHP 7.2。因此,您可以在任何地方使用任何依赖项安装它

composer require tomasvotruba/lines --dev

使用方法

vendor/bin/lines measure src

对于简短输出

vendor/bin/lines measure src --short

对于JSON输出,只需添加--json

vendor/bin/lines measure src --json

您还可以将它们结合起来(对于博客文章和推文非常有用)

vendor/bin/lines measure src --short --json

您在寻找最长的10个文件吗?

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

测量项

对于文本输出,您将获得如下数据

  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 %

或者以JSON格式

{
    "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目录,以避免巨大的误报。

如果您想测量供应商文件,请使用--allow-vendor选项

 vendor/bin/lines measure vendor/rector/rector --allow-vendor