coolgoose/larastan-legacy

Larastan Legacy 1.x - 用于修复composer依赖的不再维护的分支

v2.9.5 2024-04-16 19:13 UTC

README

注意,这只是一个作为解决方案发布的版本,用于移除对旧版1.x版本的直接composer依赖。请参阅composer/composer#11940

⚗️ 关于Larastan

Larastan由Can VuralNuno Maduro创建,由@Caneco设计艺术品,由Can VuralNuno MaduroViktor Szépe维护,是一个PHPStan包装器,用于Laravel。Larastan专注于查找代码中的错误。即使在您为代码编写测试之前,它也能捕捉到整个类的错误。

  • 为Laravel添加静态类型,以提高开发效率和代码质量
  • 支持Laravel的大部分精美魔法
  • 发现代码中的错误

尽管按照定义,“静态分析”不会加载您的应用程序的任何代码。Larastan启动应用程序的容器,以便可以解析仅在运行时可能计算的类型。这就是我们为什么使用“代码分析”而不是“静态分析”这个术语的原因。

✨ 3步入门

要求

1:首先,您可以使用Composer将Larastan作为开发依赖项安装到您的Laravel项目中

composer require nunomaduro/larastan:^1.0 --dev

使用Larastan分析Laravel包?您可能需要安装orchestra/testbench

2:然后,在应用程序的根目录中创建一个phpstan.neonphpstan.neon.dist文件。它可能看起来像这样

includes:
    - ./vendor/nunomaduro/larastan/extension.neon

parameters:

    paths:
        - app

    # The level 9 is the highest level
    level: 5

    ignoreErrors:
        - '#Unsafe usage of new static#'

    excludePaths:
        - ./*/*/FileToBeExcluded.php

    checkMissingIterableValueType: false

有关所有可用选项,请参阅PHPStan文档:https://phpstan.org/config-reference

3:最后,您可以使用phpstan控制台命令开始分析您的代码

./vendor/bin/phpstan analyse

如果您遇到错误Allowed memory size exhausted,则可以使用--memory-limit选项解决问题

./vendor/bin/phpstan analyse --memory-limit=2G

忽略错误

可以通过PHP注释或在配置文件中忽略特定错误

// @phpstan-ignore-next-line
$test->badMethod();

$test->badMethod(); // @phpstan-ignore-line

在PHPStan配置文件中忽略错误时,它们会被基于错误消息的正则表达式忽略

parameters:
    ignoreErrors:
        - '#Call to an undefined method .*badMethod\(\)#'

基线文件

在较旧的代码库中,可能很难花费时间修复所有代码以通过高PHPStan级别。

为了解决这个问题,可以生成一个基线文件。基线文件将创建一个包含所有当前错误的配置文件,以便新代码可以按照比旧代码更高的标准编写。(PHPStan 文档

./vendor/bin/phpstan analyse --generate-baseline

规则

可以在这里找到针对 Laravel 的特定可配置规则列表。

自定义 PHPDoc 类型

可以在这里找到针对 Larastan 的特定 PHPDoc 类型列表。

自定义 PHPStan 配置参数

可以在这里找到您可以在 PHPStan 配置文件中使用的自定义配置参数列表。

忽略错误

目前 Laravel 的某些部分对 Larastan/PHPStan 来说仍然过于神秘,以至于无法理解。我们列出了常见的忽略错误,根据需要添加它们。

👊🏻 贡献

感谢您考虑为 Larastan 做出贡献。所有贡献指南都可以在这里找到。

您可以通过查看变更日志来获取持续更新和有关更改的详细信息。您还可以关注 Twitter 账户以获取最新公告,或者直接打招呼:@enunomaduro@can__vural

❤️ 支持开发

您喜欢这个项目吗?通过捐赠来支持它

📖 许可证

Larastan 是一个开源软件,许可协议为MIT 许可证