使用 Duster 优化和修复您的 Laravel 代码
发布日期 作者 Matt Stauffer
今天 Tighten 宣布了以 Laravel 为中心的代码 linter 和修复程序 Duster 的 1.0 版本.
Duster 是一款工具,它将 Laravel Pint、PHP_CodeSniffer、PHP-CS-Fixer 和 Tighten 在 Tlint 中的 Laravel 特定 lints 结合在一起,为 Laravel 应用程序提供强大的综合 linting 和修复工具集。
如果您已经阅读过我们关于 共享 PHPCS 规则 或 共享 PHP-CS-Fixer 规则 的文章,那么您已经熟悉了为项目发布自己规则集的想法。Duster 采用 Laravel 在 Pint 中的基本观点,然后通过它捆绑的其他三种工具添加了更多 linter 和修复程序的强大功能。默认情况下,它坚持 Tighten 的代码风格,但它也可以完全配置为您的偏好。
让我们看看如何安装 Duster、如何运行它、如何将其集成到您的自动化工作流程中,以及如何配置它(如果您愿意——您可能对它的默认规则感到满意!)
安装 Duster
您可以通过几种方式在您的应用程序上运行 Duster,但最简单的入门方法是在您的应用程序中将其安装为 Composer 依赖项。
composer require tightenco/duster --dev
您不需要发布或配置任何内容;Duster 附带了一套开箱即用的风格,如果您喜欢它们,它会在安装完成后立即准备就绪。
运行 Duster
Duster 提供两个主要功能:“linting”和“fixing”。Lint 会告诉您代码中的某些内容是否与规则不符;修复会修复该代码。
首先,我们可以做一些基本操作:对整个代码库进行 linting 或修复。
如果我们运行 lint
,它将对整个代码库进行 lint,运行所有 linting 工具
./vendor/bin/duster lint
这将为我们提供每个工具的输出,并且,与任何 linter 一样,将返回一个成功或失败代码,可用于 CI 工具或其他脚本中。
我们还可以运行 fix
来告诉所有包含的工具修复它们在整个代码库中可以修复的任何问题
./vendor/bin/duster fix
仅对“脏”文件进行 linting
在将 linter/fixer 引入现有代码库时,它通常看起来很让人不知所措:您需要进行许多小的修复,您可能会倾向于将整个东西都扔掉。
您可以避免对目前没有处理的代码运行任何修复(或获得大量 lint 失败)的一种方法是 Duster 的 --dirty
标志,它只对具有未提交更改的文件运行 linter/fixer。
./vendor/bin/duster lint --dirty./vendor/bin/duster fix --dirty
为什么修复和 linting?
Duster 以及许多类似的工具提供 linting 和修复功能有两个主要原因。为什么添加 linting,而您可以始终只修复所有内容?
首先,某些团队可能更喜欢一个工作流程,其中不正确的代码作为失败的构建(例如作为 GitHub Action)显示,而不是被修复。
其次,某些 lint 无法自动修复。计算机可以判断您的代码是否已损坏,但它不够智能,无法为您修复它。
将 Duster 集成到您的 CI 中
与大多数代码分析工具一样,Duster 的 lint
命令根据 lint 是否成功返回成功或错误代码。这意味着您可以在任何 CI 管道中使用 ./vendor/bin/duster lint
,如果您的 lint 未匹配,则会使您的构建失败。您还可以将 ./vendor/bin/duster fix
用作 Husky 钩子或 CI 钩子的部分,以自动格式化您的代码。
如果您使用 GitHub Actions,Duster 可以轻松发布一个操作配置,该配置将对您的代码进行 lint
或 fix
。运行 ./vendor/bin/duster github-actions
并按照那里的提示将 GitHub Action 添加到您的代码库中。
配置 Duster(及其工具)
与 Pint 一样,Duster 体现了其创建者(Tighten)关于代码风格的观点。但 Duster 本身以及它导入的每个工具都可以根据您的喜好进行配置。
duster.json
Duster 提供自己的配置文件 duster.json
。该文件允许您定义要 include
或 exclude
的文件和文件夹,这些文件和文件夹来自它默认情况下针对的 Laravel 默认文件。您也可以使用它来定义您希望在 duster
流中运行的额外脚本。
例如,您可以在 lint
命令中添加 PHPStan,使用以下 duster.json
{ "scripts": { "lint": { "phpstan": ["./vendor/bin/phpstan", "analyse"] } }}
您也可以定义您自己的 fix
命令的自定义添加。
Duster 的依赖项
您可以使用它们的本地配置文件来配置 Duster 的每个依赖项;您可以在 Duster 自述文件的“自定义”部分 中了解有关如何操作的更多信息。
- Pint:
pint.json
- PHP_CodeSniffer:
.phpcs.xml.dist
- PHP-CS-Fixer:
.php-cs-fixer.dist.php
- Tlint:
tlint.json
总结
就是这样!总之,Duster 是一款用于检查和修复 Laravel 应用程序中代码风格问题的工具。它有自己的观点,开箱即用地遵循 Tighten 的首选标准,但它也可以配置为您喜欢的任何内容——包括您自己的自定义标准,如果您已经发布了它们。