tomaskvotruba / cognitive-complexity
PHPStan 规则用于衡量您的类和方法的心理复杂性
0.2.3
2024-01-03 13:13 UTC
Requires
- php: ^7.2 || ^8.0
- phpstan/phpstan: ^1.10
README
心理复杂性告诉我们,代码对读者来说有多难理解。
心理复杂性是如何衡量的?
function get_words_from_number(int $number): string { $amountInWords = ''; if ($number === 1) { // + 1 $amountInWords = 'one'; } elseif ($number === 2) { // + 1 $amountInWords = 'couple'; } elseif ($number === 3) { // + 1 $amountInWords = 'a few'; } else { // + 1 $amountInWords = 'a lot'; } return $amountInWords; }
这个函数使用了嵌套、条件和往返。它很难阅读,导致心理复杂性为4。
如何保持心理复杂性为1?阅读使用 PHPStan 保持心理复杂性低文章以了解。
安装
composer require tomasvotruba/cognitive-complexity --dev
该软件包在标记版本中可在 PHP 7.2-8.1 版本中找到。
使用方法
使用PHPStan 扩展安装程序,一切准备就绪,可以运行。
通过简单的配置分别启用每个项目
# phpstan.neon parameters: cognitive_complexity: class: 50 function: 8
检测复杂的类依赖树
在控制器、Rector 规则、PHPStan 规则或其他特定类型的服务等类中,复杂性可能隐藏在构造函数的依赖关系中。具有10个依赖项的简单类比具有2个依赖项的复杂类更复杂。
这就是为什么有规则来检测这些依赖树。它会检查
- 当前类的复杂性
- 构造函数依赖关系及其类复杂性一起
最终数字将进行比较并用作最终复杂性
# phpstan.neon parameters: cognitive_complexity: dependency_tree: 150 dependency_tree_types: # only these explicit types are checked, nothing else - Rector\Contract\Rector\RectorInterface
编码愉快!