Se référant à Est-il un analyseur de code statique [comme de la Charpie] pour les fichiers PHP? -- Je suis à la recherche à la façon d'évaluer le contenu des fichiers PHP avant qu'elles soient validées par les développeurs. Quelle solution(s) sont appropriés seront déclenchées via SVN crochets similaire à la réponse: Est-il possible de vérifier le fichier PHP syntaxe de PHP?
Je suis tombé sur cette vérification Automatique de la Syntaxe de PHP les fichiers lors de la vérification dans le SVN qui est l'angle que je vais faire, mais ... php -l
n'est pas tout à fait suffisant.
Par exemple, pour le code:
if ($foo == 'bar') {
echo $foo;
}
Il en résulte:
2012/01/15 02:51:14 [erreur] 694#0: *164 FastCGI envoyé dans stderr: "PHP notice: Undefined variable: foo
Par rapport à:
if (isset($foo)) { echo $foo; }
Certains de ce qui revient à l'éducation des codeurs sur les meilleures pratiques. Malheureusement, certains n'apprennent pas aussi rapidement que les autres, et la seule façon de s'assurer que la conformité à des normes de codage est rencontré, c'est de réduire ce qui se passe dans le SVN a été non testés ou n'est pas conforme.
Depuis le premier maillon de cette question, j'ai essayé:
- php -l
- ne pas informer sur le problème avec des
$foo
- ne pas informer sur le problème avec des
-
phplint-pure-c-1.0_20110223 - PHPLint
- ne pas informer sur le problème avec des
$foo
- ne pas informer sur le problème avec des
if ($foo == 'bar') { \_ HERE
==== /mnt/hgfs/espace de travail/scratch-pad/phpinfo.php:44: Avertissement: la comparaison (inconnu) == (string): ne peut pas vérifier la comparaison entre les types inconnus
-
phpcs - PHP Code Sniffer
- ne pas informer sur le problème avec des
$foo
malgré PHP Vérification générale indiquant que c'était la bonne réponse
- ne pas informer sur le problème avec des
-
SimpleTest
- Est très agréable, mais exige que les développeurs qui écrivent le code incorrect d'écrire de bons tests unitaires...
Tous sont intéressants à leur manière, mais aucun n'est à la capture de ces problèmes qui sont vraiment seulement être trouvé lors de l'exécution.
Apprécier entrée / réflexions sur ce thème.
MODIFIER
Il y avait une affiche qui a suggéré que les PHPLint était la bonne façon de faire. J'ai pensé, OK! Nous allons essayer à nouveau, étant donné qu'il y a une nouvelle version: phplint-pure-c-1.1_20120202:
<?php
if ($foo == 'bar') {
echo $foo;
}
?>
Test Simple .................... et, il fonctionne et rapports 1 erreur, 1 avertissement. Toutefois, si le suivant est ajouté AVANT l' if
déclaration:
<?php
if (isset($foo) && $foo == 'bar') { echo 'man'; }
if ($foo == 'bar') {
echo $foo;
}
?>
il ne fonctionne pas, et les rapports 0 erreurs, 2 avertissements.