tightenco / tlint
用于Laravel规范的代码检查工具
Requires
- php: >=8.1
- illuminate/view: *
- nikic/php-parser: ^5.0
- symfony/console: ^6.1||^7.0
- symfony/process: ^6.1||^7.0
Requires (Dev)
- phpunit/phpunit: ^9.6
- spatie/ray: ^1.37
- symfony/var-dumper: ^6.1
- tightenco/duster: ^2.0
- dev-main
- v9.3.1
- v9.3.0
- v9.2.0
- v9.1.1
- v9.1.0
- v9.0.0
- v8.0.3
- v8.0.2
- v8.0.1
- v8.0.0
- v7.0.1
- v7.0.0
- v6.3.0
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.0
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.0.16
- v5.0.15
- v5.0.14
- v5.0.13
- v5.0.11
- v5.0.10
- v5.0.9
- v5.0.8
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.0
- 2.1.8
- 2.1.7
- 2.1.5
- 2.1.4
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.3
- 2.0.2
- 2.0.0
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-mes/fix-static-model-on-v8
This package is auto-updated.
Last update: 2024-08-26 21:14:32 UTC
README
安装(需要PHP 8.1+)
注意 TLint旨在与Duster工具集配合使用。为了获得最佳覆盖范围,我们建议使用Duster来安装和配置TLint。
# Include in project composer require tightenco/tlint --dev # Include globally composer global require tightenco/tlint
升级
# Upgrade in project composer update tightenco/tlint #Upgrade globally composer global update tightenco/tlint
从8.x升级到9.x
TLint 9需要PHP >= 8.1。
tformat.json
已被弃用,改为使用单个tlint.json
文件。
现在检查以下文件和目录
public/
bootstrap/
server.php
app/Http/Middleware/RedirectIfAuthenticated.php
Exceptions/Handler.php
app/Http/Controllers/Auth/
app/Http/Kernel.php
要继续排除这些文件和目录,请将它们添加到tlint.json
文件中的excluded
部分。
从7.x升级到8.x
在7.x和8.x版本之间添加了许多格式化工具。如果您想逐步推出这些工具或完全禁用它们,可以在tlint.json
配置文件中使用disabled
设置。
从6.x升级到7.x
TLint专注于检查其他工具无法捕获的代码问题和格式问题。7.x版本删除了由Duster工具集覆盖的检查和格式化工具。如果您需要重新添加这些工具,可以从TLint的早期版本中获取它们,并遵循自定义配置文档。
它是做什么的?
这是一个针对Tighten风格的Laravel和PHP代码规范的代码检查工具(并逐步支持自动格式化!)。
例如,Laravel有许多方法可以从控制器传递变量到视图
A)
$value = 'Hello, World!'; return view('view', compact('value'));
B)
return view('view', ['value' => 'Hello, World!']);
C)
return view('view') ->with('value', 'Hello, World!');
在这种情况下,TLint会警告您没有使用B)方法。这个例子是一种代码检查的“元层”,允许团队避免代码审查/讨论中的高层次问题。
用法
对于整个项目(您必须传递lint命令才能使用其他选项)
tlint
对于单个文件和特定目录
tlint lint index.php
tlint lint app
您还可以通过运行以下命令来检查未提交的git更改中的diff文件
tlint lint --diff
tlint lint src --diff
您想将文件输出作为JSON吗?(主要用于与编辑器插件集成)
tlint lint test.php --json
您想将文件输出作为checkstyle XML报告吗?(主要用于与CI工具如reviewdog和cs2pr)
tlint lint test.php --checkstyle
您只想运行单个检查器吗?
tlint lint --only=ArrayParametersOverViewWith
示例输出
Linting TestLaravelApp/routes/web.php ============ Lints: ============ ! Prefer `view(...)->with(...)` over `view(..., [...])`. 5 : ` return view('test', ['test' => 'test']);``
格式化
使用与上述相同的约定,但使用格式命令,您可以自动修复一些检查问题
tlint format
检查配置
TLint附带2种“预设”风格:Laravel和Tighten。Laravel预设旨在与Laravel框架贡献者达成的约定相匹配,而Tighten预设旨在与Tighten团队成员达成的约定相匹配。
默认配置为“紧致”风格,但您可以通过在项目的根目录中添加一个 tlint.json
文件来更改此设置,其结构如下:
您还可以通过向
"disabled"
列表中添加特定的 linter 名称来自定义使用的 linter。您可以通过将它们添加到"excluded"
列表中来禁用特定目录的 linting。您还可以通过将它们添加到"paths"
列表中来提供自定义路径。
{ "preset": "laravel", "disabled": ["ArrayParametersOverViewWith"], "excluded": ["tests/"], "paths": [ { "controllers": ["app/Domain/Http/Controllers"] } ] }
自定义配置 & 预设
您还可以通过提供预设的完全限定类名来添加自己的自定义预设和 linter。例如,如果您创建了一个自定义预设类
namespace App\Support\Linting; use Tighten\TLint\Presets\PresetInterface; class Preset implements PresetInterface { public function getLinters() : array { return [ CustomLinter::class, ]; } public function getFormatters() : array { return [ CustomFormatter::class, ]; } }
那么您的配置可能看起来像这样
{ "preset": "App\\Support\\Linting\\Preset" }
这允许您定义自定义的 linting/formatting 功能,或根据您的喜好修改现有的 linter/formatter。
编辑器集成
PHPStorm
Sublime
VSCode
可用 Linter
通用 PHP
OneLineBetweenClassVisibilityChanges
QualifiedNamesOnlyForClassName
RemoveLeadingSlashNamespaces
Laravel
ApplyMiddlewareInRoutes
ArrayParametersOverViewWith
FullyQualifiedFacades
MailableMethodsInBuild
NoLeadingSlashesOnRoutePaths
NoDocBlocksForMigrationUpDown
NoJsonDirective
NoSpaceAfterBladeDirectives
,SpaceAfterBladeDirectives
PureRestControllers
RequestHelperFunctionWherePossible
RequestValidation
SpacesAroundBladeRenderContent
UseAnonymousMigrations
可用格式化工具
关于格式化的说明
- 格式化设计为尽可能少地更改代码。
- 导入相关的格式化工具未设计为更改分组导入。
通用 PHP
OneLineBetweenClassVisibilityChanges
RemoveLeadingSlashNamespaces
Laravel
ArrayParametersOverViewWith
FullyQualifiedFacades
MailableMethodsInBuild
NoDatesPropertyOnModels
NoDocBlocksForMigrationUpDown
NoLeadingSlashesOnRoutePaths
NoSpaceAfterBladeDirectives
RequestHelperFunctionWherePossible
RequestValidation
SpaceAfterBladeDirectives
SpacesAroundBladeRenderContent
UseAnonymousMigrations
贡献
请参阅 CONTRIBUTING 以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 hello@tighten.co 而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。