Laravel Pint
Introdução
Laravel Pint é um fixador de estilo de código PHP opinativo para minimalistas. O Pint é construído sobre o PHP-CS-Fixer e simplifica a garantia de que seu estilo de código permaneça limpo e consistente.
O Pint é instalado automaticamente com todos os novos aplicativos Laravel para que você possa começar a usá-lo imediatamente. Por padrão, o Pint não requer nenhuma configuração e corrigirá problemas de estilo de código em seu código seguindo o estilo de codificação opinativo do Laravel.
Instalação
O Pint está incluído em versões recentes do framework Laravel, portanto, a instalação geralmente é desnecessária. No entanto, para aplicativos mais antigos, você pode instalar o Laravel Pint via Composer:
composer require laravel/pint --dev
Executando o Pint
Você pode instruir o Pint a corrigir problemas de estilo de código invocando o binário pint
que está disponível no diretório vendor/bin
do seu projeto:
./vendor/bin/pint
Você também pode executar o Pint em arquivos ou diretórios específicos:
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php
O Pint exibirá uma lista completa de todos os arquivos que ele atualiza. Você pode ver ainda mais detalhes sobre as alterações do Pint fornecendo a opção -v
ao invocar o Pint:
./vendor/bin/pint -v
Se você quiser que o Pint simplesmente inspecione seu código em busca de erros de estilo sem realmente alterar os arquivos, você pode usar a opção --test
. O Pint retornará um código de saída diferente de zero se algum erro de estilo de código for encontrado:
./vendor/bin/pint --test
Se você quiser que o Pint modifique apenas os arquivos que têm alterações não confirmadas de acordo com o Git, você pode usar a opção --dirty
:
./vendor/bin/pint --dirty
Se você quiser que o Pint corrija quaisquer arquivos com erros de estilo de código, mas também saia com um código de saída diferente de zero se algum erro for corrigido, você pode usar a opção --repair
:
./vendor/bin/pint --repair
Configurando o Pint
Como mencionado anteriormente, o Pint não requer nenhuma configuração. No entanto, se você deseja personalizar as predefinições, regras ou pastas inspecionadas, você pode fazer isso criando um arquivo pint.json
no diretório raiz do seu projeto:
{
"preset": "laravel"
}
Além disso, se você deseja usar um pint.json
de um diretório específico, você pode fornecer a opção --config
ao invocar o Pint:
pint --config vendor/my-company/coding-style/pint.json
Predefinições
Predefinições definem um conjunto de regras que podem ser usadas para corrigir problemas de estilo de código no seu código. Por padrão, o Pint usa a predefinição laravel
, que corrige problemas seguindo o estilo de codificação opinativo do Laravel. No entanto, você pode especificar uma predefinição diferente fornecendo a opção --preset
para o Pint:
pint --preset psr12
Se desejar, você também pode definir a predefinição no arquivo pint.json
do seu projeto:
{
"preset": "psr12"
}
As predefinições atualmente suportadas pelo Pint são: laravel
, per
, psr12
e symfony
.
Regras
As regras são diretrizes de estilo que o Pint usará para corrigir problemas de estilo de código no seu código. Como mencionado acima, as predefinições são grupos predefinidos de regras que devem ser perfeitos para a maioria dos projetos PHP, então você normalmente não precisará se preocupar com as regras individuais que elas contêm.
No entanto, se desejar, você pode habilitar ou desabilitar regras específicas no seu arquivo pint.json
:
{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"braces": false,
"new_with_braces": {
"anonymous_class": false,
"named_class": false
}
}
}
O Pint é construído em cima do PHP-CS-Fixer. Portanto, você pode usar qualquer uma de suas regras para corrigir problemas de estilo de código no seu projeto: PHP-CS-Fixer Configurator.
Excluindo arquivos/pastas
Por padrão, o Pint inspecionará todos os arquivos .php
no seu projeto, exceto aqueles no diretório vendor
. Se desejar excluir mais pastas, você pode fazer isso usando a opção de configuração exclude
:
{
"exclude": [
"my-specific/folder"
]
}
Se desejar excluir todos os arquivos que contêm um determinado padrão de nome, você pode fazer isso usando a opção de configuração notName
:
{
"notName": [
"*-my-file.php"
]
}
Se desejar excluir um arquivo fornecendo um caminho exato para o arquivo, você pode fazer isso usando a opção de configuração notPath
:
{
"notPath": [
"path/to/excluded-file.php"
]
}
Integração contínua
Ações do GitHub
Para automatizar o linting do seu projeto com o Laravel Pint, você pode configurar Ações do GitHub para executar o Pint sempre que um novo código for enviado ao GitHub. Primeiro, certifique-se de conceder "permissões de leitura e gravação" para fluxos de trabalho no GitHub em Configurações > Ações > Geral > Permissões de fluxo de trabalho. Em seguida, crie um arquivo .github/workflows/lint.yml
com o seguinte conteúdo:
name: Fix Code Style
on: [push]
jobs:
lint:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.3]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, dom, curl, libxml, mbstring
coverage: none
- name: Install Pint
run: composer global require laravel/pint
- name: Run Pint
run: pint
- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Fixes coding style"