larastan/larastan

Larastan - 在运行代码前发现代码中的错误。Laravel 的 phpstan/phpstan 包装器

安装次数: 7,864,206

依赖者: 1,452

建议者: 1

安全: 0

星标: 5,460

关注者: 52

分支: 406

开放问题: 85

类型:phpstan-extension

v2.9.8 2024-07-06 17:46 UTC

README

Larastan Logo

Larastan Example

Build Status Total Downloads Latest Version License

⚗️ 关于 Larastan

如果您使用的是 9.x 版以前的 Laravel,请参考 Larastan v1.x,配合 PHPStan 1.8.x

Larastan 由 Can VuralNuno Maduro 创建,艺术作品由 @Caneco 设计,由 Can VuralNuno MaduroViktor Szépe 维护,是 Laravel 的 PHPStan 包装器。Larastan 专注于 在您编写测试之前发现代码中的错误

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

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

✨ 3 步开始

需求

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

composer require --dev "larastan/larastan:^2.0"

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

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

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

parameters:

    paths:
        - app/

    # Level 9 is the highest level
    level: 5

#    ignoreErrors:
#        - '#PHPDoc tag @var#'
#
#    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 的可配置规则列表:这里

功能

可以在此处找到 Larastan 功能列表:这里

自定义 PHPDoc 类型

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

自定义 PHPStan 配置参数

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

忽略错误

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

👊🏻 贡献

感谢您考虑为 Larastan 做出贡献。所有贡献指南均在此提及:这里

📖 许可证

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