Melhorando o código PHP

Olá pessoal!

Update: Acrescentado VersionEye.

A utilização dos módulos que disponibilizei, em especial o LosUi, LosBase e LosLog, aumentaram bastante nas últimas 2 semanas. Foram mais de 70 instalações. Então senti a necessidade de levar meu código a um novo nível (mais uma vez rs). Com isso adicionei na minha ‘linha de produção” algumas ferramentas para me ajudar.

Por que melhorar o código?

Quando fazemos um projeto sozinho, normalmente “pulamos” algumas etapas que são importantes, mas nem sempre por preguiça, mas por prazo curto mesmo. Acabamos deixando documentação para depois (depois este que nunca chega rs), testes (phpunit por exemplo), etc.

A curto prazo até se justifica, mas vai atrapalhar muito lá na frente, pois a maior parte do tempo gasto na manutenção, vai ser procurando bug. Difícil lembrarmos como funciona um método complicado 6 meses depois de o termos feito.

O cenário piora muito quando outra pessoa entra no nosso projeto ou entramos no projeto de outra pessoa. Quem nunca pegou o código de outra pessoa e ficou um tempo olhando e não entendendo exatamente o que faz? Ou quando foi rodar o código apresentou erros?

Pensando justamente nisso que resolvi usar várias ferramentas para melhorar o código dos meus módulos:

Todos eles são gratuitos, contanto que seu código seja open-source. Possuem integração direta com o Github e alguns com o Bitbucket também.

Badges

Na página do github dos módulos Los, estou colocando os “badges” indicando a integração com cada ferramenta disponível.

badges

 

  1. Se o módulo passou em todos os testes do travis-ci (Passing)
  2. Versão mais recente disponível pelo packagist (1.0.12)
  3. Quantidade de downloads pelo packagist (333)
  4. Cobertura dos testes phpunit em relação ao código total (80%)
  5. Qualidade do código pelo Scrutinizer (9.24/10)
  6. Qualidade do código pelo SensioLabs Insight (Platinum, máximo)
  7. Se as dependências estão atualizadas

Pode-se clicar em cada um que levará à página correspondente, mostrando até o histórico.

Php-cs-fixer

Uma coisa que facilita muito o entendimento e organização do código é “padrão”. No PHP existem alguns padrões de código: PSR-0, PSR-1, PSR-2, PSR-4. Podem ler mais a respeito na página oficial (alguns tem tradução para português).

O php-cs-fixer é uma ferramenta de console que nos garante que nosso código está de acordo com os principais padrões do mercado.

Na página dele no github tem todo o passo a passo e exemplos.

Uso tanto o php-cs-fixer, que incluir no meu script de instalação e no script do travis (explico abaixo).

Packagist

LosLog no Packagist

Packagist

Packagist é o principal site por trás do composer. Por padrão quando você instala um pacote pelo composer, ele usa o packagist.org para checar as versões e baixar o código. Pode-se integrar ao Github para sempre que houver um commit e um tag novos, o packagist é atualizado automaticamente.

Travis

LosLog no travis

Travis

Travis é um “Serviço de Integração Contínua”. Basicamente, eles criam uma máquina virtual, baixam e testam o seu código (phpunit por exemplo), tudo de forma automática.

O Travis é usado por todas as grandes bibliotecas, frameworks, e módulos. Garante que toda versão, branch, commit, “Pull Request”, esteja de acordo com as especificações e testes.

Abaixo segue o .travis.yml do módulo LosLog:

Notem que incluo no script o php-cs-fixer. Então se uma linha ou arquivo estiver fora do padrão, o teste irá falhar.

Incluo também um comando para enviar as estatísticas de cobertura dos testes para o coveralls (abaixo).

Coveralls

LosLog no Coveralls

Coveralls

O coveralls guarda as estatísticas retiradas do phpunit (por exemplo) de onde é extraída a cobertura dos testes. Quanto maior a cobertura, mais o seu código é testado.

No meu caso, ele é alimentado diretamente pelo travis-ci.

SensioLabs Insight

LosLog no Insight

SensioLabsInsight

A empresa Sensio Labs é a empresa responsável pelo Symfony, Twig, Insight entre outros produtos.

O Insight verifica o seu código por vários problemas e monta um relatório bem completo. O relatório apresenta sugestão de várias melhorias e otimizações, possíveis bugs, etc e atribui uma medalha de acordo com a quantidade de problemas e a importância deles (nenhuma, bronza, prata, outro e platina).

Scrutinizer

LosLog no Scrutinizer

Scrutinizer

O Scrutinizer é outra ferramenta de análise de código e funciona parecido com o Insight, mas rodando os 2, vi muita coisa que aparece em um e não no outro e vice-versa. Como rodo meus módulos nos 2, garanto uma melhora ainda maior no meu código.

VersionEye

LosLog no VersionEye

LosVersionEye

O VersionEye te ajuda a manter as dependências do projeto atualizadas (php, js, etc).

Resumo

Usando todas essas ferramentas, já melhorei bastante coisa nos principais módulos, mas ainda tem espaço para melhorias e vou continuar o trabalho durante os próximos dias.

Abraços,

Leandro Silva

PHP developer since 1997, loves movies, music and dogs.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*