Search by

elavora / code-standards

Felipe-Cavalca

Regras de formatação e estilo da Elavora: PHP-CS-Fixer (PER-CS), EditorConfig, lint de sintaxe PHP e base do PHPStan

Package info

github.com/Elavora/code-standards

pkg:composer/elavora/code-standards

Statistics

Installs: 262

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

1.2.0 2026-10-30 02:26 UTC

README

Regras de formatação e estilo compartilhadas pelos projetos PHP da Elavora, distribuídas como o pacote Composer elavora/code-standards.

O pacote traz quatro coisas:

  • a configuração do PHP-CS-Fixer, no padrão PER-CS, sem regras risky;
  • o .editorconfig base (indentação, fim de linha, espaços no fim da linha...), que um comando do pacote copia para a raiz do projeto;
  • o lint de sintaxe PHP (elavora-standards lint, a partir da 1.1.0), que roda php -l nos arquivos do projeto e substitui o tools/lint.php que cada projeto copiava;
  • a base do PHPStan (a partir da 1.2.0), com level: max, as regras do phpstan-strict-rules e uma lista de chamadas proibidas, que o projeto inclui no próprio arquivo do PHPStan.

Por que um pacote

As regras mudam pouco, mas mudam. Como elas são uma dependência Composer comum, o Dependabot abre um PR em cada projeto quando sai uma versão nova, do mesmo jeito que faz com o PHPUnit ou com qualquer outra dependência. Ninguém precisa lembrar de copiar arquivos de um repositório para outro.

O pacote entrega as regras e o lint, que só precisa do próprio PHP. As ferramentas de formatação (o php-cs-fixer e o editorconfig-checker) vêm na imagem ghcr.io/elavora/php-dev, usada no devcontainer e no CI, para que o editor e o CI rodem a mesma versão (veja Elavora/devcontainers).

Elavora/code-standards   → regras (este pacote, no require-dev de cada projeto)
Elavora/devcontainers    → imagem php-dev (8.3-latest) com php-cs-fixer e editorconfig-checker
Elavora/.github          → workflow de qualidade do CI, que usa as regras e as ferramentas

Uso em poucos passos

  1. Instale o pacote como dependência de desenvolvimento:

    composer require --dev elavora/code-standards
  2. Acrescente ao composer.json do projeto os scripts que mantêm o .editorconfig em dia:

    "scripts": {
        "post-install-cmd": ["Elavora\\CodeStandards\\Composer::sync"],
        "post-update-cmd": ["Elavora\\CodeStandards\\Composer::sync"]
    }
  3. Rode composer install. O pacote cria o .editorconfig e o .php-cs-fixer.dist.php na raiz do projeto. Commite os dois.

  4. Opcional: ligue o lint de sintaxe no script lint, que o CI de qualidade roda (o pacote precisa estar em ^1.1):

    "scripts": {
        "lint": "elavora-standards lint"
    }

Depois disso, php-cs-fixer fix (no devcontainer) formata o projeto com as regras da Elavora, e composer lint confere a sintaxe de todos os arquivos PHP. O passo a passo completo, com o que fazer quando o projeto já tem esses arquivos, está em docs/adocao.md.

Documentação

Leia nesta ordem:

  1. Adoção num projeto: instalação, os scripts do composer.json, o que commitar e como as atualizações chegam.
  2. Configuração do PHP-CS-Fixer: as regras, quais arquivos são formatados, por que o pacote não depende do friendsofphp/php-cs-fixer e como um projeto ajusta uma regra.
  3. EditorConfig e o comando sync: o .editorconfig base, o bloco gerado, o que acontece quando o projeto já tem um .editorconfig e a referência do comando vendor/bin/elavora-standards.
  4. Lint de sintaxe PHP: o subcomando lint, quais arquivos ele confere, como mudar as pastas, a saída, os códigos de saída e a migração do tools/lint.php.
  5. Base do PHPStan: o arquivo que o projeto inclui, as dependências, o que cada regra confere, as chamadas proibidas e como registrar uma exceção.
  6. Integração com o CI: o contrato que o workflow de qualidade do Elavora/.github usa.
  7. Desenvolvimento deste repositório: estrutura, testes, CI, release, Dependabot e a publicação no Packagist.

Licença

MIT. Veja LICENSE.