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,320 views
3,192 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
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,320
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

×