tomashvotruba / type-coverage

测量您项目的类型覆盖率

安装量: 2,096,951

依赖者: 103

建议者: 0

安全: 0

星星: 138

关注者: 5

分支: 10

公开问题: 3

类型:phpstan-extension

0.3.1 2024-06-14 15:11 UTC

README


AI abilities sea level rising... as way to rise type coverage for class elements

PHPStan使用类型声明来确定变量、属性和其他表达式的类型。有时候,在数千个错误中很难判断哪些是重要的。

我们不必一次性修复所有PHPStan错误,可以从最小的必需类型覆盖率开始。


什么是类型覆盖率?这里有4种可能的类型声明。

final class ConferenceFactory
{
    const SPEAKER_TAG = 'speaker';

    private $talkFactory;

    public function createConference(array $data)
    {
        $talks = $this->talkFactory->create($data);

        return new Conference($talks);
    }
}

注意:类常量类型需要PHP 8.3才能运行。

参数类型已定义,但属性、返回值和常量类型缺失。

  • 4个中的1个 = 25%覆盖率

我们的代码质量仅达到其潜力的四分之一。让我们达到100%!

 final class ConferenceFactory
 {
-    public const SPEAKER_TAG = 'speaker';
+    public const string SPEAKER_TAG = 'speaker';

-    private $talkFactory;
+    private TalkFactory $talkFactory;

-    public function createConference(array $data)
+    public function createConference(array $data): Conference
     {
         $talks = $this->talkFactory->create($data);

         return new Conference($talks);
     }
 }

这种技术在开始于旧项目时也非常简单。同时,您现在确切地知道项目的覆盖率有多高。


安装

composer require tomasvotruba/type-coverage --dev

此包在标记版本中可在PHP 7.2+版本上使用。


使用方法

使用PHPStan扩展安装器,一切准备就绪。

独立启用每个项目

# phpstan.neon
parameters:
    type_coverage:
        return: 50
        param: 35.5
        property: 70
        constant: 85

测量严格声明覆盖率

一旦达到100%类型覆盖率,请确保代码是严格的并使用类型

<?php

declare(strict_types=1);

再次,按自己的进度逐步提高百分比

parameters:
    type_coverage:
        declare: 40

编码愉快!