Existe uma ferramenta de análise estática para arquivos de origem PHP? O próprio binário pode verificar se há erros de sintaxe, mas estou procurando algo que faça mais, como:
- atribuições de variáveis não utilizadas
- matrizes que são atribuídas sem serem inicializadas primeiro
- e possivelmente avisos de estilo de código
- ...
php
code-analysis
static-analysis
Eswald
fonte
fonte
Respostas:
Execute o php no modo lint na linha de comando para validar a sintaxe sem execução:
php -l FILENAME
Os analisadores estáticos de nível superior incluem:
Os analisadores de nível inferior incluem:
Os analisadores de tempo de execução, que são mais úteis para algumas coisas devido à natureza dinâmica do PHP, incluem:
As bibliotecas de documentação phpdoc e doxygen realizam um tipo de análise de código. O oxigênio, por exemplo, pode ser configurado para renderizar bons gráficos de herança com o graphviz .
Outra opção é o xhprof , que é semelhante ao xdebug, mas mais leve, tornando-o adequado para servidores de produção. A ferramenta inclui uma interface baseada em PHP.
fonte
php -l
só é possível ler um arquivo de entrada por vez (isto é, não funcionará se você o fizerphp -l file1.php file2.php
). Em vez disso, você precisa usar a-n 1
opção, que informaxargs
para usar apenas uma linha de entrada por processo de comando. Isso fará com que seja executadophp -l file1.php
seguido porphp -l file2.php
, separadamente. Ao mesmo tempo, você pode usar-P <n>
para executar processos "n" por vez, a fim de paralelizar a execução:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
funciona confiável.php -l
) funcione, é necessário configurádisplay_errors = on
-laphp.ini
, caso contrário você receberá apenas uma mensagem genérica sobre a existência de erros de sintaxe, mas não há detalhes sobre quais erros ou linhas.-d
switch. Por exemplophp -l -d display_errors=on $FILENAME
Fiapo PHP on-line
PHPLint
Verificação de variáveis unitizada . Os links 1 e 2 já parecem fazer isso muito bem.
Não posso dizer que usei intensivamente qualquer um desses :)
fonte
Para completar - verifique também o phpCallGraph .
fonte
O PHP Mess Detector é incrível e rápido.
fonte
Eu tentei usar $ php -l e algumas outras ferramentas. No entanto, o melhor em minha experiência (YMMV, é claro) é um pedaço do conjunto de ferramentas pfff . Eu ouvi sobre o pfff no Quora ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
Você pode compilar e instalar. Não existem pacotes agradáveis (no meu Debian mint, eu tinha que instalar as dependências libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev e libgimp2.0-dev primeiro), mas deve valer a pena um intsall.
Os resultados são relatados como
fonte
Veja o CloneDR da Semantic Designs , uma ferramenta de "detecção de clones" que localiza o código de copiar / colar / editar. Ele encontrará fragmentos de código exatos e quase errados, apesar de espaços em branco, comentários e até renomeamentos de variáveis. Um relatório de detecção de amostra para PHP pode ser encontrado no site. (Eu sou o autor).
fonte
O NetBeans IDE verifica erros de sintaxe, variáveis não utilizadas e outras coisas. Não é automatizado, mas funciona bem para projetos pequenos ou médios.
fonte
Existe uma nova ferramenta chamada nWire for PHP . É um plug-in de exploração de código para Eclipse PDT e Zend Studio 7.x. Ele permite a análise de código em tempo real para PHP e fornece as seguintes ferramentas:
fonte
PHP PMD (detector de bagunça de projeto) e PHP CPD (detector de copiar e colar) como a parte anterior do PHPUnit
fonte
Existe o RIPS - um analisador de código fonte estático para vulnerabilidades em scripts PHP . Fontes de RIPS disponíveis no SourceForge .
No site do RIPS:
fonte
Existe uma ferramenta absolutamente nova para análise de código estático chamada PHP Analyzer .
Entre muitos tipos de análise estática, ele também fornece a funcionalidade básica de correção automática, consulte a documentação .
ATUALIZAÇÃO: O PHP-Analyzer agora é um projeto obsoleto, mas você ainda pode acessá-lo na ramificação herdada
fonte
Você pode tentar compilar com o hiphop do Facebook.
Ele faz uma análise estática de todo o projeto e pode ser o que você está procurando.
https://github.com/facebook/hiphop-php
fonte