Como começar com análise estática de PHP em 2024
21 de março de 2024
0 minutos de leituraPHP é uma linguagem de script popular do lado do servidor, amplamente usada no desenvolvimento web. Com ferramentas de análise estática que ajudam a reduzir erros no código PHP, vulnerabilidades de segurança e outros problemas que podem afetar a qualidade e a segurança da aplicação se não forem resolvidos no início do ciclo de desenvolvimento, os desenvolvedores PHP podem lançar e implantar produtos de software de maior qualidade.
O que é análise estática?
A análise estática, também chamada de análise estática de código ou análise de código-fonte, é um método de depuração que examina o código-fonte antes da execução do programa. Ela é realizada aplicando um conjunto de regras de codificação ao código-fonte do programa. O principal objetivo da análise estática é identificar e corrigir erros nas etapas iniciais do desenvolvimento do código.
No contexto do PHP, a análise estática consiste em examinar o código sem executá-lo, com o objetivo de encontrar problemas, verificar padrões de programação e compreender a arquitetura, entre outras coisas.
Veja um exemplo de como uma ferramenta de análise estática destacaria um problema no código PHP:
Neste exemplo, a ferramenta de análise estática identificaria que os argumentos "one" e "two" não são números inteiros, violando assim a declaração do tipo de parâmetro da função.
A importância da análise estática no desenvolvimento PHP
A análise estática é essencial no desenvolvimento PHP por vários motivos. Primeiro, ela ajuda a identificar erros no código PHP e possíveis problemas na base de código antes que o código seja enviado para produção. Isso é especialmente importante em uma linguagem como PHP, que tem tipagem dinâmica e facilita a introdução de erros relacionados a tipos.
Segundo, a análise estática em PHP pode garantir que o código siga um conjunto predefinido de padrões de programação. Isso é particularmente importante em projetos grandes ou em equipes, nas quais manter um estilo de programação consistente é fundamental para a legibilidade e a facilidade de manutenção do código.
Por fim, a análise estática pode ajudar a identificar códigos complexos ou com “cheiro ruim” que talvez precisem ser refatorados. Ao fornecer métricas sobre a complexidade do código, ela pode orientar melhorias na qualidade geral.
Benefícios da análise estática
A análise estática, especialmente no desenvolvimento PHP, ajuda desenvolvedores e equipes de segurança a:
Melhorar a qualidade do código: as ferramentas de análise estática ajudam a melhorar a qualidade do código ao detectar erros, vulnerabilidades de segurança e violações dos padrões de programação. Ao corrigir esses problemas no início do ciclo de desenvolvimento, os desenvolvedores evitam que se transformem em problemas maiores no futuro.
Reforçar a segurança: do ponto de vista da segurança, as ferramentas de análise estática ajudam a identificar possíveis vulnerabilidades na sua base de código. Elas detectam problemas de segurança comuns, como injeção de código em PHP, cross-site scripting (XSS) e vulnerabilidades de redirecionamento aberto.
Detectar erros de código com antecedência: ao identificar problemas logo no início, a análise estática economiza tempo e recursos dos desenvolvedores. Ela reduz significativamente o tempo gasto com depuração e revisões manuais de código, liberando os desenvolvedores para se dedicarem a tarefas mais complexas. Comece a usar a verificação estática de segurança gratuita com o Snyk.
Conformidade com padrões: a análise estática ajuda a garantir que sua base de código esteja em conformidade com os padrões do setor de qualidade, segurança e facilidade de manutenção de código. Isso é especialmente importante em setores regulamentados, nos quais o cumprimento de determinados padrões costuma ser obrigatório.
Entenda o PERCS 2.0
PERCS 2.0, sigla de PHP Enhanced Review Coding Standard, é uma atualização significativa da versão inicial do PERCS. É uma ferramenta avançada de análise estática de código PHP que ajuda os desenvolvedores a seguir um conjunto específico de padrões de programação, melhorar a qualidade do código e reforçar as convenções de programação.
Esta versão do PERCS oferece diversos recursos, incluindo verificação de sintaxe e de estilo de código, além da detecção de possíveis brechas de segurança. É uma ferramenta valiosa para desenvolvedores PHP que querem melhorar a qualidade do código e garantir a conformidade com as convenções padrão de programação.
Seguir padrões de programação é fundamental no desenvolvimento de software. Eles garantem que o código seja legível, fácil de manter e consistente, facilitando a colaboração entre equipes e a compreensão da base de código por novos desenvolvedores. Os padrões também evitam erros comuns de programação e possíveis vulnerabilidades de segurança. Ao aplicar um estilo de programação padronizado, os desenvolvedores conseguem identificar e corrigir problemas com mais eficiência.
O PERCS 2.0 melhora significativamente a qualidade do código e a conformidade com as convenções de programação. Para isso, oferece feedback imediato sobre o código, destacando áreas que não seguem os padrões de programação e possíveis vulnerabilidades de segurança.
Com o PERCS 2.0, os desenvolvedores podem aplicar um nível mais alto de qualidade ao código, garantindo que suas aplicações PHP sejam confiáveis, fáceis de manter e seguras.
As 3 principais ferramentas de análise estática para PHP
No campo da segurança de código e do desenvolvimento de software, a análise estática é fundamental para manter a alta qualidade do código e identificar possíveis vulnerabilidades de segurança antes que se tornem um problema. Vamos conhecer três ferramentas poderosas de análise estática para PHP: PHPStan, Psalm e Snyk. Elas ajudam os desenvolvedores a encontrar bugs e falhas de segurança no código PHP, contribuindo para a conformidade de segurança da aplicação.
1. PHPStan
O PHPStan é um dos analisadores estáticos de código PHP mais populares. Ele se concentra em encontrar bugs no código sem executá-lo. A principal vantagem do PHPStan é a capacidade de detectar classes inteiras de bugs antes mesmo de você escrever testes para o código.
Para instalar o PHPStan, você pode usar o Composer, uma ferramenta de gerenciamento de dependências para PHP. Veja como:
Para executar o PHPStan no seu código PHP, basta rodar o comando abaixo:
Aqui, src representa o diretório que contém seu código PHP. Em seguida, o PHPStan exibirá uma lista dos possíveis problemas encontrados no código. O resultado geralmente inclui o nome do arquivo, o número da linha e uma descrição do problema. Por exemplo, ele pode detectar e exibir o seguinte:
2. Psalm
O Psalm é outra ferramenta poderosa de análise estática para PHP. Ele foi desenvolvido para identificar erros de sintaxe e de lógica no código. Uma das principais vantagens do Psalm é a capacidade de inferir tipos no código PHP, o que permite detectar bugs relacionados a tipos antes que ocorram.
Você pode instalar o Psalm usando o Composer:
Para executar o Psalm no seu código PHP, use o seguinte comando:
O resultado do Psalm mostra uma lista de problemas no código, semelhante ao PHPStan. No entanto, o Psalm também informa o nível de gravidade de cada problema, o que ajuda a priorizar as correções.
Veja um exemplo do resultado do Psalm:
3. Snyk para segurança de código no desenvolvimento PHP
Snyk é uma ferramenta de segurança criada para desenvolvedores, que ajuda você a encontrar, entender e corrigir vulnerabilidades e problemas de segurança no seu código, nas dependências de código aberto, nas imagens de contêiner e muito mais. A ferramenta foi projetada para se integrar ao seu fluxo de trabalho atual. Ela funciona perfeitamente com vários IDEs e ferramentas de build, para que você possa instalar gratuitamente o plugin do PHPStorm ou a extensão do VS Code da Snyk e começar a analisar seu código em busca de vulnerabilidades.
O Snyk identifica problemas de código inseguro usando seu amplo banco de dados de vulnerabilidades e seus recursos inteligentes de análise de código. Com isso, a ferramenta detecta uma grande variedade de possíveis ameaças à segurança, incluindo a execução de código que afetou o projeto SuiteCRM e a execução remota de código no dompdf.
Veja um exemplo de injeção de SQL que o Snyk consegue detectar:
No trecho de código PHP acima, as entradas do usuário são concatenadas diretamente à consulta SQL, deixando-a vulnerável a ataques de injeção de SQL. A análise estática de código PHP do Snyk sinaliza isso como um risco grave à segurança. Recomendo fazer a lição do Snyk Learn sobre injeções de SQL para entender por que o código acima é inseguro e como evitar essa vulnerabilidade.

O Snyk também ajuda a identificar bugs comuns no código PHP que podem causar problemas de segurança. Por exemplo, o uso de uma função PHP obsoleta ou sem suporte pode introduzir vulnerabilidades na aplicação.
Integração do Snyk com os IDEs PHPStorm e VS Code
O Snyk se integra facilmente a IDEs populares, como PHPStorm e Visual Studio Code, oferecendo feedback em tempo real e análise de vulnerabilidades enquanto você programa.
Depois de instalar o plugin do Snyk para PHPStorm, você pode executar análises do Snyk diretamente no IDE. Basta clicar com o botão direito do mouse no projeto em Project Explorer, selecionar Snyk Scan e conferir os resultados da análise na guia Snyk, no painel inferior.
Integração do Snyk com o VS Code
Para integrar o Snyk ao VS Code, instale a extensão Snyk Vulnerability Scanner pelo marketplace do VS Code. Depois da instalação, o Snyk analisará automaticamente o projeto em busca de padrões de código PHP inseguro e dependências vulneráveis no arquivo do Composer. Você também pode analisar o projeto novamente: abra a Paleta de Comandos (Ctrl+Shift+P), digite Snyk e selecione a opção Snyk: Rescan. Os resultados serão exibidos em uma nova guia do Snyk na barra lateral.
Integração da análise estática de PHP aos pipelines de CI/CD
Com a crescente complexidade do desenvolvimento de software e a necessidade cada vez maior de aplicações seguras, integrar ferramentas de análise estática e de estilo de código ao fluxo de trabalho de desenvolvimento PHP é mais importante do que nunca. Os pipelines de integração contínua (CI) e implantação contínua (CD) oferecem o ambiente ideal para automatizar esses processos e garantir a qualidade e a segurança do código em todo o ciclo de desenvolvimento.
Essas ferramentas não só ajudam a manter a qualidade e a consistência do código, como também funcionam como uma primeira linha de defesa contra possíveis ameaças à segurança. Elas ajudam a identificar e corrigir possíveis vulnerabilidades nas etapas iniciais do desenvolvimento de software, economizando tempo, esforço e recursos a longo prazo.
No exemplo acima, o PHPStan está integrado a um pipeline de CI/CD usando o GitHub Actions. Assim, a análise estática é executada automaticamente a cada push ou pull request, identificando possíveis problemas com antecedência e tornando a revisão de código mais eficiente.
Vantagens de integrar a análise estática à automação de CI
Integrar a análise estática ao seu pipeline de CI pode trazer diversos benefícios:
Detecção antecipada de bugs: a análise estática ajuda a detectar possíveis problemas e vulnerabilidades no início do processo de desenvolvimento, reduzindo o custo e o tempo necessários para corrigi-los.
Melhoria da qualidade do código: ao aplicar padrões de programação e boas práticas, a análise estática contribui para um código mais limpo e fácil de manter.
Mais segurança: a análise estática ajuda a identificar vulnerabilidades de segurança no código, contribuindo para aplicações mais seguras.
Conheça as ferramentas de estilo de código
O próximo tema é como manter um estilo de código consistente. As ferramentas de estilo de código são fundamentais para aplicar um padrão uniforme em toda a base de código, tornando-a mais legível e fácil de manter. Essas ferramentas também reduzem a possibilidade de erros e vulnerabilidades de segurança ao aplicar boas práticas de programação. Para isso, podemos usar ferramentas específicas de estilo de código para PHP: PHPCS, StyleCI e PHP-CS-Fixer.
Por que implementar uma ferramenta de estilo de código?
Os padrões de programação são um conjunto de diretrizes e boas práticas para escrever código. Eles ajudam os desenvolvedores a criar código limpo, profissional e sem erros. Seguir um estilo de código consistente melhora a legibilidade, reduz a complexidade e incentiva a reutilização do código. É aí que entram as ferramentas de estilo de código. Elas verificam automaticamente problemas de estilo e, em alguns casos, podem até corrigi-los.
No desenvolvimento PHP, essas ferramentas são indispensáveis. Além de ajudar a manter um estilo de código consistente, elas têm um papel essencial na detecção de possíveis vulnerabilidades de segurança. Isso é fundamental no cenário atual de ameaças cibernéticas, em que até o menor erro de programação pode levar a graves violações de segurança.
PHP_CodeSniffer (PHPCS)
PHP_CodeSniffer (PHPCS) é um conjunto de dois scripts PHP. O script principal phpcs tokeniza arquivos PHP, JavaScript e CSS para detectar violações de um padrão de codificação definido. Já o segundo script, phpcbf, corrige automaticamente essas violações.
Você pode instalar o PHPCS usando o Composer:
Depois de instalado, você pode executar o comando phpcs no diretório do seu projeto:
O PHPCS exibirá todas as violações dos padrões de codificação que encontrar. Por exemplo:
Você pode usar o comando phpcbf para corrigir esses problemas automaticamente:
StyleCI
StyleCI é um serviço de integração contínua para estilo de código PHP. Essa ferramenta baseada na web pode ser integrada aos seus repositórios do GitHub, GitLab ou Bitbucket. Ela verifica cada push ou pull request para garantir que o código siga o estilo configurado.
Para usar o StyleCI, você precisa se cadastrar no site do serviço e vincular seus repositórios.
PHP-CS-Fixer
A ferramenta PHP-CS-Fixer, da FriendsOfPHP, também detecta e corrige problemas relacionados aos padrões de codificação no seu código PHP.
Você pode instalar o PHP-CS-Fixer usando o Composer:
Depois de instalar o PHP-CS-Fixer, você pode usar o comando php-cs-fixer para corrigir seu código:
O PHP-CS-Fixer exibirá os arquivos que corrigiu:
Conclusão
Neste artigo, falamos sobre a importância da análise estática e das ferramentas de estilo de código no desenvolvimento PHP. Vimos como essas ferramentas podem melhorar não só a qualidade da base de código, mas também a segurança geral da aplicação.
Ferramentas de análise estática, como PHPStan, Psalm e Snyk, têm um papel fundamental na identificação de possíveis problemas no seu código PHP que podem causar bugs ou vulnerabilidades de segurança. Elas analisam seu código em profundidade sem executá-lo, o que permite detectar erros logo no início.
Se você está criando aplicações PHP com contêineres, recomendo conferir estes recursos:
Como proteger uma aplicação PHP ao colocá-la em um contêiner Docker
Práticas recomendadas para criar um Dockerfile de produção para aplicações PHP
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.



