Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Seguindo padrões:      Codificandoprofissionalmente com      PHP Sniffer   Vinicius Warto Campos  www.facebook.com/wartoca
Vinicius Warto Campos○ Desenvolvedor de Software na    empresa Ci&T, atuando    exclusivamente no    desenvolvimento de ap...
Agenda○   Público Alvo○   O que são standards?○   Por que utilizar standards?○   O que é PHP Sniffer?○   Utilizando PHP Sn...
Público Alvo○ Ambiente   ○ Arquiteto   ○ Analista de Suporte○ Modelagem de Sistemas   ○ Arquiteto de Sistemas   ○ Arquitet...
Público Alvo○ Implementação  ○   Analista Programador  ○   Programador  ○   Desenvolvedor  ○   Implementador  ○   Webdesig...
O que são standards?○ Convenção de código○ Conjunto de boas práticas no momento   de codificação○ Visam validar um padrão ...
O que são standards?○ Não definem Padrões de Projetos   ○   Singleton   ○   Factory   ○   MVC   ○   ORM   ○   Active Recor...
O que são standards?○ Definem:  ○   Indentação do Código  ○   Padrão de comentários  ○   Padrão de documentação  ○   Decla...
O que são standards?○ Adicionalmente podem validar   ○   Performance do código   ○   Segurança do código   ○   Delimitador...
Por que utilizar standards?○ Garantir a qualidade do software○ Garantir a legibilidade do código○ Reduzir o custo da manut...
Por que utilizar standards?○ Definir a utilização de boas práticas○ Evitar problemas de padronização de   código em Code R...
Por que utilizar standards?
Por que utilizar standards?○ Você colabora para projetos Open Source?○ Você submete códigos para aprovação?○ Sabia que ess...
O que é PHP Sniffer?○ É a ferramente sobre a qual você testará   um Coding Standard em seu projeto○ É um módulo da bibliot...
Utilizando PHP Sniffer○ Para utilizar o PHP Code Sniffer, executamos o    camando phpcs na tela do terminal○   phpcs {list...
Utilizando PHP Sniffer$ phpcs --helpUsage: phpcs [-nwlsapvi] [-d key[=value]]    [--report=<report>] [--report-file=<repor...
Utilizando PHP Sniffer$ phpcs -iThe installed coding standards are Zend, PEAR, PHPCS, Squiz and MySource$ phpcs /path/to/m...
Utilizando PHP Sniffer$ phpcs /path/to/my/project/FILE: /path/to/my/project/my-file.php-----------------------------------...
Aplicações Práticas○ IDE   ○ Eclipse   ○ Netbeans○ Code Review○ Continuous Integration Software   ○ Hudson   ○ Jenkins○ Co...
Aplicações Práticas○ Sugestão de processo "Build and Deploy"   ○   Criar um projeto Hudson / Jenkins   ○   Atualizar repos...
Configurando o PHP Sniffer○ Instalação do módulo PEAR○ Habilitação do PEAR para proxy, se necessário○ Instalação do pacote...
Configurando o PHP Sniffer○ Seguem abaixo os comandos que devem ser executados   em terminal, um após o outro, para execut...
Configurando o PHP Sniffer○ Para adicionar um novo standard   ○ Abrir a pasta de Standards "/pear-     path/PHP/CodeSniffe...
Configurando sua IDE○ As configurações a seguir foram feitas nas seguintes   versões de IDE   ○ Netbeans 6.9+   ○ Eclipse ...
Configurando sua IDE                  Netbeans○ Baixar o plugin phpMD  ○ http://sourceforge.     net/projects/phpmdnb/file...
Configurando sua IDE                  Netbeans○ Habilitar plugin   ○   Abrir Netbeans   ○   Abrir Ferramentas => Plug-ins ...
Configurando sua IDE                  Netbeans○ Configurar plugin   ○ Abrir Ferramentas => Opções => PHP   ○ Selecionar ab...
Configurando sua IDE                  Netbeans○ Configurar plugin   ○ Abrir Ferramentas => Opções => PHP   ○ Selecionar ab...
Configurando sua IDE                  Netbeans○ Abrir a Janela de Tarefas   ○ [Ctrl] + [6]   ○ No ícone folha em branco   ...
Configurando sua IDE                 Netbeans○ Marcar as configurações conforme a imagem abaixo:
Configurando sua IDE                  Netbeans○ Conforme um arquivo for aberto, alterado e salvo, o   Sniffer será executa...
Configurando sua IDE                    Eclipse○ Adicionar plugin   ○   Abrir Eclipse   ○   Clicar em Help => Install new ...
Configurando sua IDE                  Eclipse○ Configurar PHP no Eclipse   ○ Abrir Windows => Preferences   ○ Abrir opção ...
Configurando sua IDE                   Eclipse○ Configurar plugin   ○ Abrir a pasta de Standards do plugin      ■ /eclipse...
Configurando sua IDE       Eclipse
Configurando sua IDE                  Eclipse○ Configurar plugin   ○ Clicar em Window => Show View => Problems   ○ Na jane...
Configurando sua IDE       Eclipse
Configurando sua IDE                   Eclipse○ Para executar o Sniffer   ○ Clicar com o botão direito no arquivo     ■ Cl...
Agradecimentos○ PHP Conference Brazil 2012○ Participantes do evento○ Comunidade PHP○ Aos amigos Thomas Bryan e Rafael Nica...
Dúvidas
Contato○ E-mail   ○ wartocampos@hotmaill.com   ○ wartocampos@gmail.com○ Facebook   ○ www.facebook.com/wartoca
Referências Bibliográficashttp://blogs.funiber.org/direcao-empresarial-rsc/2012/10/04/definicao-do-publico-alvo/http://en....
Upcoming SlideShare
Loading in …5
×

Seguindo padrões: Codificando profissionalmente com PHP Sniffer

3,767 views

Published on

Workshop presented on November 30th, 2012, by Vinicius Warto at PHP Conference Brazil. This work explains how to perform a professional software development using PHP Code Sniffer with some pratical issues.

Published in: Technology
  • Be the first to comment

Seguindo padrões: Codificando profissionalmente com PHP Sniffer

  1. 1. Seguindo padrões: Codificandoprofissionalmente com PHP Sniffer Vinicius Warto Campos www.facebook.com/wartoca
  2. 2. Vinicius Warto Campos○ Desenvolvedor de Software na empresa Ci&T, atuando exclusivamente no desenvolvimento de aplicações Web, utilizando PHP, Java e .Net.○ Larga experiência em desenvolvimento de projetos PHP.○ Atua há 5 anos com desenvolvimento em PHP.○ Músico nas horas vagas○ Video-game sempre é uma boa pedida
  3. 3. Agenda○ Público Alvo○ O que são standards?○ Por que utilizar standards?○ O que é PHP Sniffer?○ Utilizando PHP Sniffer○ Aplicações Práticas○ Configurando o PHP Sniffer○ Configurando sua IDE
  4. 4. Público Alvo○ Ambiente ○ Arquiteto ○ Analista de Suporte○ Modelagem de Sistemas ○ Arquiteto de Sistemas ○ Arquiteto de Software○ Liderança Técnica ○ Líder Técnico ○ Líder de Desenvolvimento
  5. 5. Público Alvo○ Implementação ○ Analista Programador ○ Programador ○ Desenvolvedor ○ Implementador ○ Webdesigner ○ Webdeveloper
  6. 6. O que são standards?○ Convenção de código○ Conjunto de boas práticas no momento de codificação○ Visam validar um padrão de implementação, independentemente de qual parte de um código está sendo implementada ○ DAO ○ DTO ○ Controller ○ Generic Class
  7. 7. O que são standards?○ Não definem Padrões de Projetos ○ Singleton ○ Factory ○ MVC ○ ORM ○ Active Record ○ Data Persistence○ Não definem utilização de frameworks ○ Zend ○ Symfony ○ CakePHP ○ Code Igniter
  8. 8. O que são standards?○ Definem: ○ Indentação do Código ○ Padrão de comentários ○ Padrão de documentação ○ Declarações ○ Statements ○ Convenções de nomenclatura ○ Práticas de programação ○ Princípios de programação ○ White spaces ○ Atribuição e comparação de valores
  9. 9. O que são standards?○ Adicionalmente podem validar ○ Performance do código ○ Segurança do código ○ Delimitador de quebra de linha ○ Código duplicado ○ Sugestão de refatoração de código
  10. 10. Por que utilizar standards?○ Garantir a qualidade do software○ Garantir a legibilidade do código○ Reduzir o custo da manutenção○ Definir um código seguro○ Definir um código confiável○ Definir um código eficiente
  11. 11. Por que utilizar standards?○ Definir a utilização de boas práticas○ Evitar problemas de padronização de código em Code Review
  12. 12. Por que utilizar standards?
  13. 13. Por que utilizar standards?○ Você colabora para projetos Open Source?○ Você submete códigos para aprovação?○ Sabia que esses códigos devem ser padronizados?○ Drupal ○ Contribute to development ○ Standards, security and best practices ○ Coding standards
  14. 14. O que é PHP Sniffer?○ É a ferramente sobre a qual você testará um Coding Standard em seu projeto○ É um módulo da biblioteca PEAR, que possui um script que detecta violações de códigos que utilizam um Standard definido○ Também detecta erros comuns de semântica○ É necessário possui o módulo PEAR para instalá-lo e utilizá-lo
  15. 15. Utilizando PHP Sniffer○ Para utilizar o PHP Code Sniffer, executamos o camando phpcs na tela do terminal○ phpcs {lista de parâmetros}○ phpcs --help○ phpcs -i○ phpcs /path/to/my/project/my-file.php○ phpcs /path/to/my/project/○ phpcs -n /path/to/my/project/○ phpcs --standard=PEAR /path/to/my/project○ phpcs --standard=/path/to/MyStandard /path/to/my/project/my-file.php
  16. 16. Utilizando PHP Sniffer$ phpcs --helpUsage: phpcs [-nwlsapvi] [-d key[=value]] [--report=<report>] [--report-file=<reportfile>] [--report-<report>=<reportfile>] ... [--report-width=<reportWidth>] [--generator=<generator>] [--tab-width=<tabWidth>] [--severity=<severity>] [--error-severity=<severity>] [--warning-severity=<severity>] [--config-set key value] [--config-delete key] [--config-show] [--standard=<standard>] [--sniffs=<sniffs>] [--encoding=<encoding>] [--extensions=<extensions>] [--ignore=<patterns>] <file> ... -n Do not print warnings (shortcut for --warning-severity=0) -w Print both warnings and errors (on by default) -l Local directory only, no recursion -s Show sniff codes in all reports -a Run interactively -p Show progress of the run -v[v][v] Print verbose output -i Show a list of installed coding standards -d Set the [key] php.ini value to [value] or [true] if value is omitted --help Print this help message
  17. 17. Utilizando PHP Sniffer$ phpcs -iThe installed coding standards are Zend, PEAR, PHPCS, Squiz and MySource$ phpcs /path/to/my/project/my-file.phpFILE: /path/to/my/project/my-file.php--------------------------------------------------------------------------------FOUND 5 ERROR(S) AFFECTING 2 LINE(S)-------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment 20 | ERROR | PHP keywords must be lowercase; expected "false" but found "FALSE" 47 | ERROR | Line not indented correctly; expected 4 spaces but found 1 51 | ERROR | Missing function doc comment 88 | ERROR | Line not indented correctly; expected 9 spaces but found 6--------------------------------------------------------------------------------
  18. 18. Utilizando PHP Sniffer$ phpcs /path/to/my/project/FILE: /path/to/my/project/my-file.php--------------------------------------------------------------------------------FOUND 5 ERROR(S) AFFECTING 5 LINE(S)-------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment 20 | ERROR | PHP keywords must be lowercase; expected "false" but found "FALSE" 47 | ERROR | Line not indented correctly; expected 4 spaces but found 1 51 | ERROR | Missing function doc comment 88 | ERROR | Line not indented correctly; expected 9 spaces but found 6--------------------------------------------------------------------------------FILE: /path/to/my/project/your-file.php--------------------------------------------------------------------------------FOUND 1 ERROR(S) AND 1 WARNING(S) AFFECTING 1 LINE(S)-------------------------------------------------------------------------------- 21 | ERROR | PHP keywords must be lowercase; expected "false" but found | | "FALSE" 21 | WARNING | Equals sign not aligned with surrounding assignments--------------------------------------------------------------------------------
  19. 19. Aplicações Práticas○ IDE ○ Eclipse ○ Netbeans○ Code Review○ Continuous Integration Software ○ Hudson ○ Jenkins○ Code Analysis Software ○ Sonar
  20. 20. Aplicações Práticas○ Sugestão de processo "Build and Deploy" ○ Criar um projeto Hudson / Jenkins ○ Atualizar repositório (CVS / SVN / GIT) ○ Executar Sonar ○ Executar PHP Sniffer ○ Build ○ Deploy
  21. 21. Configurando o PHP Sniffer○ Instalação do módulo PEAR○ Habilitação do PEAR para proxy, se necessário○ Instalação do pacote PHP Code Sniffer○ Definição do "channel" PHPMD○ Definição do "channel" PDEPEND○ Instalação do pacote PHPMD
  22. 22. Configurando o PHP Sniffer○ Seguem abaixo os comandos que devem ser executados em terminal, um após o outro, para executar os passos definidos no slide anterior$ wget http://pear.php.net/go-pear.phar$ php go-pear.phar$ pear config-set http_proxy <username>:<password>@<proxy-url-address>:<port-number>$ pear install --alldeps PHP_CodeSniffer-1.3.0$ pear channel-discover pear.phpmd.org$ pear channel-discover pear.pdepend.org$ pear install --alldeps phpmd/PHP_PMD$ phpcs -i
  23. 23. Configurando o PHP Sniffer○ Para adicionar um novo standard ○ Abrir a pasta de Standards "/pear- path/PHP/CodeSniffer/Standards" ○ Adicione sua pasta de Standard ○ Execute phpcs -i para confirmar seu standard
  24. 24. Configurando sua IDE○ As configurações a seguir foram feitas nas seguintes versões de IDE ○ Netbeans 6.9+ ○ Eclipse Helios
  25. 25. Configurando sua IDE Netbeans○ Baixar o plugin phpMD ○ http://sourceforge. net/projects/phpmdnb/files/nbm/NetBeans-6.9.1/ ○ nb-phpmd-20110516-nb6.9.1.201011082200.nbm○ Instalar o plugin ○ Abrir Netbeans ○ Abrir Ferramentas => Plug-ins ○ Selecionar aba "Baixados" ○ Clicar em "Adicionar plug-ins" ○ Selecionar o arquivo baixado ○ Clicar em Continuar ○ Após a instalação, reiniciar o Netbeans
  26. 26. Configurando sua IDE Netbeans○ Habilitar plugin ○ Abrir Netbeans ○ Abrir Ferramentas => Plug-ins ○ Selecionar aba "Instalado" ○ Selecionar plugin "phpCS-MD Plugin" ○ Clicar em Ativar ○ Clicar em Habilitar ○ Clicar em Finalizar ○ Fechar janela de Plug-ins
  27. 27. Configurando sua IDE Netbeans○ Configurar plugin ○ Abrir Ferramentas => Opções => PHP ○ Selecionar aba "phpMD" ○ No campo "phpMD batch file", adicionar executável phpMD ■ /php-path/phpmd.bat || /php-path/phpmd ○ No campo "includes", colocar a expressão ■ ^.*.inc[5]?$|^.*.module[5]?$|^.*.php[5]?$|^.*.css [5]?$|^.*.install?$|^.*.js?$|^.*.theme?$|^.*. engine?$|^.*.test?$|^.*.info?$|^.*.po?$ ○ Clicar em "test settings" ○ Clicar em OK
  28. 28. Configurando sua IDE Netbeans○ Configurar plugin ○ Abrir Ferramentas => Opções => PHP ○ Selecionar aba "phpCodeSniffer" ○ No campo "phpCodeSniffer batch file", adicionar executável phpCodeSniffer ■ /php-path/phpcs.bat || /php-path/phpcs ○ No campo "Standard", informe o standard ○ No campo "includes", colocar a expressão ■ ^.*.inc[5]?$|^.*.module[5]?$|^.*.php[5]?$|^.*.css [5]?$|^.*.install?$|^.*.js?$|^.*.theme?$|^.*. engine?$|^.*.test?$|^.*.info?$|^.*.po?$ ○ Clicar em "test settings" ○ Clicar em OK
  29. 29. Configurando sua IDE Netbeans○ Abrir a Janela de Tarefas ○ [Ctrl] + [6] ○ No ícone folha em branco ■ Clicar em "Exibir tarefas somente para arquivos editados atualmente." ○ Clicar na seta que aponta para baixo no ícone do funil ■ Clicar em Editar
  30. 30. Configurando sua IDE Netbeans○ Marcar as configurações conforme a imagem abaixo:
  31. 31. Configurando sua IDE Netbeans○ Conforme um arquivo for aberto, alterado e salvo, o Sniffer será executado automaticamente e a janela tarefas exibirá os erros de standard.
  32. 32. Configurando sua IDE Eclipse○ Adicionar plugin ○ Abrir Eclipse ○ Clicar em Help => Install new Software ○ Clicar em Add ○ Ao abrir janela "Add Repository" ■ Name: PHP Tool Integration (PTI) ■ Location: http://www.phpsrc.org/eclipse/pti ○ Após confirmar os dados, selecionar o Plugin ○ Clicar em Next ○ Aceitar termos e clicar em Finish ○ Confirmar Security Warning ○ Reiniciar Eclipse
  33. 33. Configurando sua IDE Eclipse○ Configurar PHP no Eclipse ○ Abrir Windows => Preferences ○ Abrir opção PHP => PHP Executables ○ Clicar em Add ○ Defina o nome de acordo com a versão local do PHP ○ No campo Executable Path, informe o executavel ■ /php-path/bin/php.exe || /php-path/bin/php.exe ○ SAPI Type, marque a opção CLI ○ Clicar em Finish ○ Fechar a janela Preferences
  34. 34. Configurando sua IDE Eclipse○ Configurar plugin ○ Abrir a pasta de Standards do plugin ■ /eclipse-path/plugins/org.phpsrc.eclipse.pti.library. pear_1.2.2. R2011062700000/php/library/PEAR/PHP/CodeSnif fer/Standards ○ Adicione sua pasta de Standard nesse local ○ Abrir Windows => Preferences ○ Abrir opção PHP Tools => PHP CodeSniffer ○ Preencher opções conforme a próxima imagem, mas informe o PHP Executable e Standard apropriados
  35. 35. Configurando sua IDE Eclipse
  36. 36. Configurando sua IDE Eclipse○ Configurar plugin ○ Clicar em Window => Show View => Problems ○ Na janela Problems, clicar em View Menu ○ Clicar em Configure Contents ○ Clicar em New ■ Adicionar o nome do Standard ○ Scope ■ ‘On selected element only’ ○ Types ■ Deselect All ■ PHP Code Sniffer ■ Problem ○ Clicar em OK
  37. 37. Configurando sua IDE Eclipse
  38. 38. Configurando sua IDE Eclipse○ Para executar o Sniffer ○ Clicar com o botão direito no arquivo ■ Clicar em PHP Tools => PHP Code Sniffer ○ A janela Problems será atualizada com os erros de Standard
  39. 39. Agradecimentos○ PHP Conference Brazil 2012○ Participantes do evento○ Comunidade PHP○ Aos amigos Thomas Bryan e Rafael Nica pelo suporte e revisão do conteúdo
  40. 40. Dúvidas
  41. 41. Contato○ E-mail ○ wartocampos@hotmaill.com ○ wartocampos@gmail.com○ Facebook ○ www.facebook.com/wartoca
  42. 42. Referências Bibliográficashttp://blogs.funiber.org/direcao-empresarial-rsc/2012/10/04/definicao-do-publico-alvo/http://en.wikipedia.org/wiki/Software_qualityhttp://msdn.microsoft.com/en-us/library/aa291591%28v=vs.71%29.aspxhttp://en.wikipedia.org/wiki/Coding_conventionshttp://drupal.org/contribute/development#page-subtitlehttp://drupal.org/node/360052http://drupal.org/coding-standardshttp://pear.php.net/manual/en/package.php.php-codesniffer.intro.phphttp://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.phphttp://en.wikipedia.org/wiki/Hudson_%28software%29http://en.wikipedia.org/wiki/Jenkins_%28software%29http://en.wikipedia.org/wiki/Sonar_%28software_quality%29

×