insolita / yii2-codestat
受 Laravel Stats 启发的代码使用统计
Requires
- php: ^7.2
- league/climate: ^3.2
- phploc/phploc: ^5.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- codeception/specify: ~1.1
- codeception/verify: ~1.0.0
- phpunit/phpunit: ~7.0
This package is auto-updated.
Last update: 2024-09-11 16:38:30 UTC
README
基于 phploc/phploc
安装
运行以下命令之一
composer require --dev insolita/yii2-codestat:~2.0
或者在你的 composer.json
文件的 require-dev 部分添加以下内容:
"insolita/yii2-codestat": "~2.0"
基本用法
在控制台配置文件中,在 modules 部分添加
php
'modules'=>[
....
'codestat'=>[
'class'=>\insolita\codestat\CodeStatModule::class,
'scanTargets' => ['@backend/','@common/','@frontend/','@console/'],
'exceptTargets' => ['*config*','vendor*','*web/','*runtime/','*views/','*tests/'],
]
],
scanTargets - 将要递归扫描的路径或路径别名数组 exceptTargets - 要排除的路径模式数组
运行以下命令以检查将要处理的文件完整列表:
./yii codestat/default/list-files
运行以下命令以输出统计摘要:
./yii codestat
运行以下命令以输出带有显示不良解析文件的统计摘要:
./yii codestat 1
显示每个定义的组的完整 phploc 报告
./yii codestat/default/advanced
./yii codestat/default/advanced WebControllers
./yii codestat/default/advanced WebControllers,RestControllers,ConsoleControllers
显示所有匹配文件的完整 phploc 报告
./yii codestat/default/common
显示自定义目录的完整 phploc 报告
./yii codestat/default/directory @common/models
显示自定义文件的完整 phploc 报告
./yii codestat/default/file @common/lib/MySuperClass.php
列出可用的指标及其代码
./yii codestat/default/list-metrics
高级用法
自定义类分组规则
您可以通过支持格式扩展或覆盖属性 'groupRules'
'分组名称' => '基础父类'
其中 '基础父类' 应通过 (\ReflectionClass)->isSubclassOf()
进行验证
或者
'Group Name' => function(\ReflectionClass $reflection){
//Should return true if class valid for this group, otherwise false;
}
最终示例
php
'modules'=>[
....
'codestat'=>[
'class'=>\insolita\codestat\CodeStatModule::class,
'groupRules' => [
'Jobs' => 'yii\queue\JobInterface',
'Handlers' => 'trntv\bus\interfaces\Handler::class',
'DTO' => function (\ReflectionClass $reflection) {
return mb_strpos($reflection->getFileName(), 'Dto')!==false;
},
'All Tests' => function (\ReflectionClass $reflection) {
return $reflection->isSubclassOf('\Codeception\Test\Unit')
|| StringHelper::endsWith($reflection->getName(), 'Cest');
},
] + CodeStatModule::defaultRules(),
],
]
],
重要! 列表中规则的顺序很重要,基础类 (\yii\base\Component 和 \yii\base\Object) 应位于列表末尾!
自定义代码指标
由 https://github.com/sebastianbergmann/phploc 提供的代码指标有很多变体,您可以定义自己的组合
对于 advanced/common/directory/file 动作,您应设置 metrics 属性为包含必要指标名称的数组
php
'modules'=>[
....
'codestat'=>[
'class'=>\insolita\codestat\CodeStatModule::class,
'metrics'=>['loc','lloc','classCcnAvg', 'classLlocAvg', 'methodCcnAvg']
]
]
对于 summary 动作,您应在模块中提供属性 'analyseCallback',如下所示:
'analyseCallback = function($group){ /**@var insolita\codestat\lib\collection\Group $group **/ $metrics=$customAnalyzer->analyze($group->getFiles()); return ['totalFiles'=>count($group->getFiles()), 'metric1'=>$metrics[some], ...etc]; }
它应返回包含 'metric name' => 'metric value'
数据的关联数组,并将替换内部 https://github .com/Insolita/yii2-codestat/blob/7d0fc3351718b2052624ea091ff8f154fe471aeb/src/lib/CodestatService.php#L154
以及表格摘要约定 - 如果指标名称包含斜杠 "/",则汇总行将计算平均值,否则求和