PHP Sintaxe verificando o controle pré-fonte

Referindo paraxiste um analisador de código estático [como o Lint] para arquivos PH -stou vendo como avaliar o conteúdo dos arquivos PHP antes que eles sejam confirmados pelos desenvolvedore As soluções apropriadas serão acionadas por meio de ganchos SVN semelhantes à resposta: possível verificar a sintaxe do arquivo PHP a partir do PH

Me deparei com isso Verificação automática de sintaxe de arquivos PHP ao verificar no SVN qual é o ângulo que estou procurando, no entanto ...php -l não é suficiente.

Por exemplo, dado o código:

if ($foo == 'bar') { 
     echo $foo;
}

Isto resulta em

2012/01/15 02:51:14 [erro] 694 # 0: * 164 FastCGI enviado no stderr: "Aviso do PHP: Variável indefinida: foo

Comparado com

if (isset($foo)) { echo $foo; }

Algo disso se resume à educação de codificadores sobre as melhores práticas. Infelizmente, alguns não aprendem tão rapidamente quanto outros, e a única maneira de garantir a conformidade com os padrões de codificação é reduzir o que está entrando no SVN que não foi testado ou não é compatíve

No primeiro link nesta pergunta, tentei:

php -l não notifica sobre o problema com$foo phplint-pure-c-1.0_20110223 - PHPLint não notifica sobre o problema com$foo
    if ($foo == 'bar') {
                     \_ HERE

==== /mnt/hgfs/workspace/scratch-pad/phpinfo.php:44: Aviso: comparando (desconhecido) == (string): não é possível verificar a comparação entre tipos desconhecidos

phpcs - Sniffer de código PHP não notifica sobre o problema com$foo apesar dePHP Sanity Check indicando que foi a resposta certa SimpleTestÉ muito bom, mas exige que os desenvolvedores que estão escrevendo o código incorreto escrevamBo testes de unidade ...

@All é interessante à sua maneira, mas nenhum está detectando esses problemas que realmente só são encontrados em tempo de execuçã

Aprecie sugestões / reflexões sobre este tópic

EDITA

Havia um pôster que sugeria que o PHPLint era o caminho certo a seguir. Eu pensei, ok! Vamos tentar novamente, uma vez que existe uma nova versão: phplint-pure-c-1.1_20120202:

 <?php
 if ($foo == 'bar') {
     echo $foo;
 }
 ?>

Simple test .................... e,funcion e relata 1 erro, 1 aviso. No entanto, se o seguinte for adicionadoANTE aif declaração

 <?php
 if (isset($foo) && $foo == 'bar') { echo 'man'; }
 if ($foo == 'bar') { 
     echo $foo;
 }
 ?>

não funcion e relata 0 erros, 2 aviso

questionAnswers(6)

yourAnswerToTheQuestion