Integração continuada em php

Standard

Depois de algum tempo sem escrever sobre desenvolvimento web resolvi fazer uma pequena série de artigos para realizar uma experiência com meus alunos. O primeiro é este: Integração contínua (ou integração continuada) em PHP.

Will code for food
photo credit: pvera

Integração contínua é uma daquelas coisas que todo mundo sabe o que é, mas ninguém sabe explicar. Aqui e agora, vamos entender isto como sendo: Uma série de operações automatizadas, a serem realizadas sobre o código, antes da entrega final, de forma contínua e constante. Bonito? Em outras palavras, vamos automatizar o processo de entrega, verificação, padronização, controle de versão e documentação do código para que os pobres programadores possam ficar concentrados em programar.  Melhorou?

Começaremos como Xinc (http://code.google.com/p/xinc/) trata-se de um servidor de integração continuada. Ele já é integrado com o Subversion (http://tigris.subversion.org) para controle de versão, com o Phing (http://phing.info/) um sistema de automação de entrega e, graças a este último, com o PHPunit (https://github.com/sebastianbergmann/phpunit/) um framework para testes. O Xinc é o servidor de integração do PHP por excelência, mas, não é a única solução. Podemos, por exemplo, usar o Hudson (http://hudson-ci.org/) que, apesar de ser desenvolvido em Java (arrrrgh!!!) tem uma interface mais amigável e uma curva de aprendizado menor.

Uma vez decidido ou servidor de integração resta-nos escolher as bibliotecas e funções que usaremos para documentar, padronizar e corrigir o código antes de entregar.  Neste quesito o PHP impera…

PHPDocumentor, a ferramenta de documentação do PHP. Se você sabe codificar, também sabe comentar. Acho que foi o Knuth que disse: O código é um livro que executa. O PHPDoc é a mais antiga e mais usada ferramenta de documentação de código PHP. Eu tenho usado o PHP DOX simplesmente por que gosto de testar coisas novas.

PHPUnit, citada acima, é a versão PHP do xUnit um dos melhores frameworks de testes disponíveis no mercado, que permite a execução de testes automatizados no código, além de possuir uma “linguagem” específica para a criação destes testes e avaliação de resultados. Além de testar e indicar os erros o PHPUnit pode ser configurado para gerar um relatório de erros. Este relatório será indispensável para o acompanhamento da integração continuada.

PHP Code Sniffer, analisa o código em busca de violações no padrão de codificação. Ou seja, garante que o código guardado no Subversion, atende os padrões pré-estabelecidos de codificação e, consequentemente, é de leitura fácil. Já vem com os padrões usados pela Zend e pelo pessoal do PEAR.

PHP Depend, realiza uma análise estática do código para a geração de métricas de codificação. Use-o para analisar a qualidade, e complexidade, do código. Se seu projeto é grande, esta ferramenta merece sua atenção.

PHPMD (ou detector de bagunça em PHP) usa as mesmas métricas do PHPDepend e, assim como ele, faz uma análise do código e indica o grau de entropia (desordem, bagunça) do seu código.

PHPCPD (detector de copia e cola). Quantas partes do seu código são apenas copiadas e coladas? Será que não seria possível criar uma função ou classe para estas partes. Esta ferramenta vai analisar o código e indicar trechos candidatos para substituição.

PHPDCD (detector de código morto), varre seu código atrás de métodos e funções definidas, mas nunca usadas. Reduzindo o tempo de manutenção do código e de interpretação.  Mas de uma vez assisti desenvolvedores perdendo dias de manutenção para corrigir uma função que nunca seria usada. Não é comum em projetos pequenos onde um ou dois desenvolvedores cuidam de todo o código, mas em projetos grandes, isso acontece toda hora.

Coloquei as ferramentas na ordem em que devem ser chamadas. Você terá que estudar cada uma delas, para ver como criar e analisar os relatórios. Além disso, deverá criar um script no servidor de integração escolhido para enviar este código para o cliente.  Talvez, dependendo do tamanho do seu projeto e da demanda do seu servidor, seja necessário incluir um ou dois passos para limpar, verificar, mesclar e comprimir javascript e css o Minify  pode ajudar aqui.

12 thoughts on “Integração continuada em php

  1. alexk856

    Apesar de o tempo ter sido um pouco curto para aprendermos o PHP nas suas aulas, o texto postado me ajudou a entender um pouco mais sobre esta linguagem de programação. Aguardo novas postagens. Valeu.

  2. Maicon_Kaeber

    A integração continuada ajuda a melhorar a qualidade dos softwares, reduzindo riscos e processos manuais. Apesar de inda não ter tido oportunidade de trabalhar diretemente com isso as ferramentas apresentadas me parecem ser de excelente qualidade. Excelente post Frank abraços.

  3. jose_leopoldo

    Obrigado pelas dicas professor, não programo em PHP mas terei que começar muito em breve. Com certeza essas dicas serão úteis em meu desenvolvimento, principalmente o PHPMD, que vai arrumar minhas "bagunças"… hahahaha

  4. mariohsantos

    Acredito que estas ferramentas nos ajudam a encontrar um padrão de desenvolvimento, assim todos aqueles que estão envolvidos na manutenção ou até mesmo no desenvolvimento do sistema terão mais facilidades de entender o próprio sistema. O que muitas vezes acontece, um sistema passa por vários programadores e geralmente cada um faz de um jeito, e com estas ferramentas podemos manter um padrão de desenvolvimento, evitando tal tipo de bagunça. Além de encontrar um padrão, conseguimos manter um padrão de desempenho alto e otimizado, e acredito que as seguintes ferramentas estejam bem unidas PHPDEPEND, PHPMD, PHPCPD, PHPDCD. Outro fator importante Documentação, muitos programadores não documentam seus métodos e operações o que dificulta muitas vezes a interpretação de determinado métodos, ae caimos naquela: para que serve este método? O PHPDocumentor simplesmente evita esse tipo de acontecimento.

    Acredito que com a integração, podemos entregar um produto com um padrão de qualidade elevado e em menos tempo para o cliente final.

    É uma ótima maneira de se programar PHP com estas ferramentas.

    Um abraço e
    Boa noite a todos.

    Att,

    Mario Henrique, 8º BSI – SPEI – NOITE.

  5. jairopereira

    Boa noite Professor

    Boa noite Professor
    Confesso que quando iniciamos a estudar PHP, eu tinha algum preconceito com a Linguagem. Até por que ouvíamos professores ao longo da Faculdade falarem sobre Java, Java, Java.
    Mas quando comecei a observar e entender a Linguagem (PHP), consegui extrair varias informações de aprendizado, que hoje em dia, se fosse para desenvolver meu TCC, com certeza não faria em Java, Escolheria PHP.
    Quando eu pesquiso as Formas de ajuda da linguagem fico mais empolgado e interessado em PHP.

    A Integração continuada, são umas das melhores formas para se aperfeiçoar as aplicações sendo elas de pequeno,médio e grande porte. Estes processos nos ajudam a encontrar e corrigir bugs que poderão desestabiliar uma aplicação.

    Obrigado pelas informações.

  6. EdsonPfluck

    Olá Frank…
    Como seria bom ter tido acesso a essas informações desde o começo da matéria e por que não dizer em outras matérias, reservadas as devidas diferenças.
    Subversion….hummm….entendi, errei essa na prova, (rs) mas serviu para aprendizado.
    Gostaria de ter mais tempo para me dedicar a essa linguagem, que assim como qualquer outra, "vicia" e passa a te dar prazer em programar e procurar novos desafios e a solução dos mesmos.
    Edson Pfluck – SPEI

  7. Andre_Cussolin

    Tivemos pouco tempo de aula com voce professor, mas foi o suficiente pra que voce apresentasse uma pequena amostra do tamanho do PHP, que aparenta ser uma linguagem não dificil para se programar, onde existem bastante profissionais dessa área, porém muito poucos que sabem ganhar dinheiro com ela. Obrigado pelas informações desse post.

    André Cussolin – 8BSI – SPEI – Noite

  8. EvertonKopec

    Essas ferramentas são umas das premissas básicas para um projeto bem padronizado.
    Sabendo utilizar cada ferramenta, integrando uma a uma no seu projeto tenho certeza que terás um projeto bem organizado e de fácil entendimento.

  9. hagnarok

    Bemm..
    Chegamos a um dos velhos dilemas de todas as linguagens de programação, padrão, organização e qualidade. Ferramentas como estas, acima de tudo, nos ajuda a padronizar não somente nosso código, mas muitas vezes nossa forma de pensar ao programar tendo como consequência a organização e por fim, na maioria das vezes, a qualidade do produto desenvolvido. Sendo evitada a desordem fica muito mais fácil algum dia alguém que não seja quem programou o código entenda o que esta se passando no mesmo. Também nos ajuda a não perder tempo no desenvolvimento, realizando algumas atividades para nós automatizadamente.

    Att…
    Juliano Braga – 8° BSI – SPEI – Noite.

  10. achorbach

    Para que qualquer linguagem de programação tenha o melhor desempenho esperado é necessário uma ótima organização nos mais diversos setores que envolvam o projeto.
    Alguns pontos vale a pena mencionar, como:
    – A detecção e correção de erros cada vez mais cedo e mais frequente;
    – Relatórios a cada trabalho desenvolvido;
    – Código limpo e consistente;
    – Documentação detalhada;
    – Aumento da confiança no sentido de minimização dos possíveis erros.
    Admir Correia Horbach

Comments are closed.