slam / phpstan-extensions

phpstan的Slam扩展

安装次数: 18,140,018

依赖项: 111

建议者: 0

安全性: 0

星级: 66

关注者: 5

分支: 13

开放问题: 4

类型:phpstan-extension

v6.4.1 2024-08-01 13:49 UTC

README

Latest Stable Version Downloads Integrate Code Coverage

PHPStan的扩展

安装

要使用此扩展,请在Composer中要求它

composer require --dev slam/phpstan-extensions

用法

当您使用phpstan/extension-installer时,conf/slam-rules.neon将自动包含。

否则,您需要将conf/slam-rules.neon包含在您的phpstan.neon

includes:
    - vendor/slam/phpstan-extensions/conf/slam-rules.neon

规则

  1. SlamPhpStan\UnusedVariableRule:检查函数内部在初始赋值后未使用的变量
  2. SlamPhpStan\MissingClosureParameterTypehintRule:要求闭包参数类型提示;警告:不允许PhpDoc,请参阅phpstan/phpstan-strict-rules#87
  3. SlamPhpStan\StringToClassRule:要求引用类的字符串以::class表示法表示
  4. SlamPhpStan\GotoRule:不允许goto
  5. SlamPhpStan\ClassNotationRule:
    1. 接口必须以"Interface"结尾
    2. 特质必须以"Trait"结尾
    3. 抽象类必须以"Abstract"开头
    4. 异常必须以"Exception"结尾
  6. SlamPhpStan\PhpUnitFqcnAnnotationRule:以下PHPUnit注解中找到的类必须存在
    1. @expectedException
    2. @covers
    3. @coversDefaultClass
    4. @uses
  7. SlamPhpStan\AccessGlobalVariableWithinContextRule:禁止在扩展或实现特定类/接口的类中访问全局变量
  8. SlamPhpStan\AccessStaticPropertyWithinModelContextRule:禁止在扩展或实现特定类/接口的类中访问类的静态属性,在模型中禁止使用单例很有用

Not-NOW配置

存在一个用于禁止原始日期系统调用的not-now-rules.neon配置

includes:
    - vendor/slam/phpstan-extensions/conf/not-now-rules.neon

这些规则禁止

  1. new DateTimeImmutable()
  2. new DateTime('yesterday')
  3. date('Y-m-d')
  4. time()
  5. strtotime('noon')

您应该依靠像lcobucci/clock这样的时钟抽象。

警告:规则并不完美,用户可以轻易地绕过它们;它们仅用于帮助过渡到适当的时钟抽象。

Symfony特定的配置

存在一个用于Symfony项目的symfony-rules.neon配置

includes:
    - vendor/slam/phpstan-extensions/conf/symfony-rules.neon

以下配置

  1. SlamPhpStan\SymfonyFilesystemRule:禁止调用由symfony/filesystem组件良好封装的原始文件系统函数
  2. SlamPhpStan\SymfonyProcessRule:禁止调用由symfony/process组件良好封装的原始系统函数

Yii特定的配置

存在一个用于Yii项目的yii-rules.neon配置

includes:
    - vendor/slam/phpstan-extensions/conf/yii-rules.neon

以下配置

  1. SlamPhpStan\AccessGlobalVariableWithinContextRule:拒绝在实现yii\db\ActiveRecordInterface的模型中使用$_GET$_POST和其他全局变量:在模型中访问单例被认为是一种反模式
  2. SlamPhpStan\AccessStaticPropertyWithinModelContextRule:拒绝在实现yii\db\ActiveRecordInterface的模型中使用yii\BaseYii静态变量,如$app:在模型中访问单例被认为是一种反模式