Header Ads

Como criar um pipeline GitLab CI para analisar projetos PHP estaticamente

Executar análises estáticas em seu código economiza tempo, descobrindo problemas ocultos. PHPStan é uma ferramenta de análise estática para PHP que ajuda a aumentar a qualidade de sua base de código. Veja como executar o PHPStan em seus pipelines GitLab CI.

É bom executar o PHPStan regularmente enquanto você cria novos recursos. Porém, usá-lo localmente só leva você até aí. Você depende de seus outros membros da equipe serem tão disciplinados quanto você. A integração da análise estática em um fluxo de trabalho de CI / CD garante que o código não possa ser mesclado se isso quebrar o branch principal do seu projeto.

Obtendo a configuração com PHPStan

Primeiro você precisa adicionar PHPStan em seu projeto. Já temos um guia detalhado sobre a instalação e configuração do PHPStan, portanto, cobriremos apenas o básico aqui.

Primeiro, use o Composer para instalar o PHPStan:

 compositor requer --dev phpstan / phpstan 

Em seguida, crie um arquivo de configuração phpstan. neon básico em seu projeto:

Parâmetros

: nível: caminhos máximos: - src - testes tmpDir: . tmp

O diretório temporário é substituído para auxiliar o cache do GitLab CI &’ configuração abaixo.

Agora você pode executar o PHPStan localmente para verificar se a configuração funciona:

 vendor / bin / phpstan analise 

Nesta fase, não importa se os testes passam.

Configurando GitLab para CI

Certifique-se de enviar seu código para um projeto em seu servidor GitLab. Você precisará verificar se o recurso Pipelines está habilitado para o seu projeto – se você vir “ CI / CD ” na barra lateral esquerda, você está pronto para começar.

Para ativar o sistema CI do seu projeto, clique no link “ Configurações ” botão na barra lateral. Expanda a seção “ Visibilidade, recursos do projeto, permissões ” seção “ Pipelines ” recurso.

Se você usar os Merge Requests (MRs) do GitLab de maneira disciplinada, agora você pode configurar o GitLab para evitar que os MRs sejam integrados, a menos que tenham um pipeline bem-sucedido. Expanda a seção “ Solicitações de mesclagem ” seção de configurações e verifique a seção “ Os pipelines devem ser bem-sucedidos ” botão de alternância. Clique em “ Salvar ” confirmar. Isso impedirá que você acidentalmente mescle um MR quando o PHPStan falhar em suas alterações.

Para usar o GitLab CI, você &’ precisará ter um GitLab Runner definido na instância, grupo ou nível de projeto. Os corredores são responsáveis ​​por executar as tarefas de CI criadas pelo sistema GitLab.

Usaremos a imagem do PHPStan Docker para executar o PHPStan em nosso pipeline de CI. Isso requer o uso de um GitLab Runner usando o executor Docker. Se você estiver em uma instância autogerenciada e precisar configurar um novo Runner, siga a orientação em nosso artigo sobre como configurar o GitLab CI.

Criação de um pipeline GitLab CI

O GitLab CI é configurado usando um arquivo . gitlab-ci. yml na raiz do seu projeto. Os pipelines de CI oferecem suporte a vários estágios sequenciais. Os trabalhos de cada estágio são executados em paralelo. Para o nosso propósito de executar o PHPStan, precisamos de um único estágio que execute uma tarefa.

etapas: - phpstan cache: chave: $ CI_COMMIT_REF_SLUG caminhos: - . tmp / - vendor / phpstan: etapa: phpstan imagem: ghcr. io/phpstan/phpstan script: - analisar --no-progress --error-format gitlab > artefatos phpstan. json: when: always relata: codequality: phpstan. json

Este arquivo GitLab CI contém tudo o que precisamos para executar o PHPStan em nosso pipeline. Definimos um estágio, phpstan, contendo um trabalho que também é chamado de phpstan. O trabalho usa a imagem oficial do PHPStan Docker do registro de contêiner do GitHub.

O cache GitLab CI é configurado para armazenar em cache os diretórios . tmp e vendor. Isso melhorará o desempenho das execuções subsequentes na mesma ramificação. O cache será restaurado automaticamente. De volta ao nosso phpstan. neon, definimos o tmpDir como . tmp por este motivo – isso significa que agora podemos referenciá-lo com segurança na configuração de cache do pipeline de CI &’

Também armazenamos em cache o fornecedor para evitar reinstalar desnecessariamente as dependências do Composer em cada execução. Observe que você não precisa executar a instalação do composer manualmente – a imagem oficial do PHPStan Docker o invoca automaticamente.

O sinalizador --error-format é passado para o comando de análise do PHPStan. Isso configura o PHPStan para criar um arquivo JSON no formato aceito pelo relatório de qualidade de código do GitLab ’. Abaixo na seção de artefatos, este arquivo é carregado para GitLab após a conclusão do trabalho.

Usando o pipeline

Confirme seu . gitlab-ci. yml e envie para seu servidor GitLab. O sistema de CI agora deve iniciar e criar seu primeiro pipeline. Use o “ CI / CD ” link na navegação à esquerda para visualizar o progresso do pipeline.

Se você receber uma marca verde, os testes de PHPStan &’ s foram aprovados! Seu branch está em bom estado e pronto para ser mesclado. Se uma cruz vermelha aparecer, você tem mais trabalho a fazer. PHPStan e GitLab CI apenas impediram você de mesclar códigos potencialmente corrompidos.

Você pode obter a lista de erros clicando no ícone de download à direita do pipeline. Selecione o artefato de qualidade de código PHPStan para obter o relatório JSON de erros que o PHPStan encontrou.

Usando com solicitações de mesclagem

Ler o JSON manualmente não é uma ótima experiência. No entanto, as solicitações de mesclagem do GitLab expõem o conteúdo do relatório automaticamente. Como o relatório é marcado como um artefato de qualidade de código GitLab, o GitLab sabe como apresentar as informações nele.

As solicitações de mesclagem com um pipeline com falha devem exibir uma tag expansível “ Qualidade do código ” seção. Isso indica o número de erros encontrados. Expanda a seção para ver uma lista completa dos problemas encontrados pelo PHPStan.

Depois de resolver os problemas, envie suas alterações para o GitLab. O pipeline será executado novamente. Assim que estiver concluído, você verá o novo status na tela Pipelines e no widget de qualidade de código da sua solicitação de mesclagem.

Conclusão

PHPStan ajuda você a escrever PHP melhor que é menos suscetível a problemas ocultos. Para obter o máximo dela, a ferramenta deve ser incorporada ao seu fluxo de trabalho de desenvolvimento de forma que não possa ser ignorada ou contornada.

Usar o PHPStan com GitLab CI oferece a consistência de que você precisa para ter confiança em seu código. Configurar o GitLab para bloquear MRs com um pipeline com falha significa que as alterações não podem entrar em seu branch principal sem passar por uma execução de PHPStan. O suporte total do PHPStan para os relatórios de qualidade de código do GitLab torna mais fácil avaliar os erros sem sair da IU da web, ajudando você a corrigir rapidamente quaisquer problemas que sejam descobertos.

Nenhum comentário