Recommend this page to a friend! |
Download .zip |
Info | Documentation | View files (44) | Download .zip | Reputation | Support forum | Blog (1) | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2022-09-28 (1 month ago) | Not yet rated by the users | Total: 23 This week: 12 | All time: 10,717 This week: 9 |
Version | License | PHP version | Categories | |||
yii2-codestat 1.0.0 | MIT/X Consortium ... | 5 | Statistics, Utilities and Tools |
Description | Author | |||
This package can analyze and display statistics about PHP code. Innovation Award
|
Based on phploc/phploc
Either run
composer require --dev insolita/yii2-codestat:~2.0
or add
"insolita/yii2-codestat": "~2.0"
in require-dev section of your composer.json
file.
Add in console configuration file, in section modules
php
'modules'=>[
....
'codestat'=>[
'class'=>\insolita\codestat\CodeStatModule::class,
'scanTargets' => ['@backend/','@common/','@frontend/','@console/'],
'exceptTargets' => ['config','vendor','web/','runtime/','views/','*tests/'],
]
],
scanTargets - array of path, or path aliases that will be scanned recursively exceptTargets - array of path patterns for excluding
For checking whole list of files that will be processed, run
./yii codestat/default/list-files
For statistic summary output run
./yii codestat
For statistic summary output with show bad resolved files
./yii codestat 1
Show full phploc report per each defined group
./yii codestat/default/advanced
./yii codestat/default/advanced WebControllers
./yii codestat/default/advanced WebControllers,RestControllers,ConsoleControllers
Show full phploc report for all matched files
./yii codestat/default/common
Show full phploc report for custom directory
./yii codestat/default/directory @common/models
Show full phploc report for custom file
./yii codestat/default/file @common/lib/MySuperClass.php
List available metrics with codes
./yii codestat/default/list-metrics
You can extend or overwrite property 'groupRules', with supported formats
'Group Name' => 'BaseParentClass'
where 'BaseParentClass' should by verified with (\ReflectionClass)->isSubclassOf()
or
'Group Name' => function(\ReflectionClass $reflection){
//Should return true if class valid for this group, otherwise false;
}
Final example
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(),
],
]
],
Important! The order of the rules in the list matters, the base classes (\yii\base\Component and \yii\base\Object) should be at the end of the list!
Code metrics provided by https://github.com/sebastianbergmann/phploc, has lot of variants, you can define own combination
For actions advanced/common/directory/file you should set metrics property with array of necessary metric names
php
'modules'=>[
....
'codestat'=>[
'class'=>\insolita\codestat\CodeStatModule::class,
'metrics'=>['loc','lloc','classCcnAvg', 'classLlocAvg', 'methodCcnAvg']
]
]
For summary action you should provide property 'analyseCallback' in module like as
'analyseCallback = function($group){
/@var insolita\codestat\lib\collection\Group $group/
$metrics=$customAnalyzer->analyze($group->getFiles());
return ['totalFiles'=>count($group->getFiles()), 'metric1'=>$metrics[some], ...etc];
}
It should return associative array with 'metric name' => 'metric value'
data and will replace internal https://github
.com/Insolita/yii2-codestat/blob/7d0fc3351718b2052624ea091ff8f154fe471aeb/src/lib/CodestatService.php#L154
And also table summary convention - if metric name contains slash "/", for summary row will be counted average value, otherwise sum
Files |
File | Role | Description | ||
---|---|---|---|---|
src (1 file, 3 directories) | ||||
tests (4 files, 2 directories) | ||||
.travis.yml | Data | Auxiliary data | ||
CHANGELOG.md | Data | Auxiliary data | ||
codestat.png | Data | Auxiliary data | ||
composer.json | Data | Auxiliary data | ||
phpunit.xml | Data | Auxiliary data | ||
README.md | Doc. | Documentation |
Files | / | src |
File | Role | Description | ||
---|---|---|---|---|
controllers (1 file) | ||||
helpers (1 file) | ||||
lib (1 file, 3 directories) | ||||
CodeStatModule.php | Class | Class source |
Files | / | src | / | lib |
File | Role | Description | ||
---|---|---|---|---|
classdetect (2 files) | ||||
collection (3 files) | ||||
contracts (2 files) | ||||
CodestatService.php | Class | Class source |
Files | / | src | / | lib | / | classdetect |
File | Role | Description |
---|---|---|
RegexpDetector.php | Class | Class source |
TokenizerDetector.php | Class | Class source |
Files | / | src | / | lib | / | collection |
File | Role | Description |
---|---|---|
BaseCollection.php | Class | Class source |
Group.php | Class | Class source |
GroupCollection.php | Class | Class source |
Files | / | src | / | lib | / | contracts |
File | Role | Description |
---|---|---|
ClassDetectorInterface.php | Class | Class source |
CodestatServiceInterface.php | Class | Class source |
Files | / | tests |
File | Role | Description | ||
---|---|---|---|---|
config (1 file) | ||||
stub (1 file, 3 directories) | ||||
ClassDetectorTest.php | Class | Class source | ||
CodestatServiceTest.php | Class | Class source | ||
GroupCollectionTest.php | Class | Class source | ||
GroupTest.php | Class | Class source |
Files | / | tests | / | stub |
File | Role | Description | ||
---|---|---|---|---|
one (9 files, 1 directory) | ||||
two (9 files) | ||||
views (1 directory) | ||||
StubTrait.php | Class | Class source |
Files | / | tests | / | stub | / | one |
File | Role | Description | ||
---|---|---|---|---|
views (1 directory) | ||||
AutoloadExample.php | Class | Class source | ||
HelloController.php | Class | Class source | ||
LoginForm.php | Class | Class source | ||
StubAction.php | Class | Class source | ||
StubBehavior.php | Class | Class source | ||
StubComponent.php | Class | Class source | ||
StubEvent.php | Class | Class source | ||
StubModel.php | Class | Class source | ||
StubModule.php | Class | Class source |
Files | / | tests | / | stub | / | two |
File | Role | Description |
---|---|---|
Bootstrapper.php | Class | Class source |
m170412_230002_migration.php | Class | Class source |
SectionItem.php | Class | Class source |
SiteController.php | Class | Class source |
StubAbstract.php | Class | Class source |
StubConcrete.php | Class | Class source |
StubFinal.php | Class | Class source |
StubImpl.php | Class | Class source |
StubInterface.php | Class | Class source |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.