071. 项目代码统计——wnx/laravel-stats

项目代码统计——wnx/laravel-stats

今天介绍的这个扩展包 github.com/stefanzweifel/laravel-s... 是用来做代码统计的,它可以帮助我们分析整个项目的每个功能使用了多少个类,方法,写了多少行等等,扩展包能直观的展示出代码的统计结果,方便我们发现问题,做接下来的代码优化。

安装

用一个相对完整的项目做代码统计可能会更加直观,这里使用 Larabbs 项目,其中的 API 分支中有完整的网站以及所有的接口代码,尝试着进行代码分析,先来安装一下。

$ git checkout -b stats
$ composer require "wnx/laravel-stats" --dev

file

发布配置文件:

$ php artisan vendor:publish --provider="Wnx\LaravelStats\StatsServiceProvider"

file

使用

使用起来很简单,扩展包提供了命令 stats

$ php artisan stats

file

看一下统计结果:

  • Name —— 名称;
  • Classes —— 类的数量;
  • Methods —— 方法的数量;
  • Lines —— 行数;
  • LoC —— 逻辑所占的行数;

不是太好理解的是 LoC ,逻辑所占的行数,其实这里是利用了扩展包 PHPLoc ,某个 issue 中可以看到作者的回答,github.com/sebastianbergmann/phplo... ,其实只是大致统计了分号的数量.

命令还能传入参数格式化成 Json,php artisan stats --format=json 方便我们做其他的数据处理。

增加其他类的统计

统计的说明扩展包的文档中有写,注意某些类并没有统计到,可以自己注册:

$ mkdir app/Classifiers
$ touch app/Classifiers/TransformerClassifier.php

app/Classifiers/TransformerClassifier.php

<?php

namespace App\Classifiers;

use Wnx\LaravelStats\ReflectionClass;
use Wnx\LaravelStats\Contracts\Classifier;
use League\Fractal\TransformerAbstract;

class TransformerClassifier implements Classifier
{
    public function getName()
    {
        return 'Transformer';
    }

    public function satisfies(ReflectionClass $class)
    {
        return $class->isSubclassOf(TransformerAbstract::class);
    }
}

file

再来统计一下 Api Controller 。

app/Classifiers/ApiControllerClassifier.php

<?php

namespace App\Classifiers;

use Wnx\LaravelStats\ReflectionClass;
use Wnx\LaravelStats\Contracts\Classifier;
use App\Http\Controllers\Api\Controller;

class ApiControllerClassifier implements Classifier
{
    public function getName()
    {
        return 'ApiController';
    }

    public function satisfies(ReflectionClass $class)
    {
        return $class->isSubclassOf(Controller::class);
    }
}

file

代码版本控制

$ git add -A
$ git commit -m 'wnx/laravel-stats'

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~