Nous avons une application Web PHP 5 et nous évaluons actuellement PHP CodeSniffer afin de décider si le forçage des normes de code améliore la qualité du code sans causer trop de maux de tête. Si cela semble bon, nous ajouterons un crochet de pré-validation SVN pour nous assurer que tous les nouveaux fichiers validés sur la branche dev ne contiennent pas d'odeurs standard de codage.
Existe-t-il un moyen de configurer PHP codeSniffer pour ignorer un type d'erreur particulier? ou le faire traiter une certaine erreur comme un avertissement à la place?
Voici un exemple pour illustrer le problème:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<?php
echo getTabContent('Programming', 1, $numX, $numY);
if (isset($msg)) {
echo $msg;
}
?>
</div>
</body>
</html>
Et voici la sortie de PHP_CodeSniffer:
> phpcs test.php -------------------------------------------------- ------------------------------ TROUVE 2 ERREUR (S) ET 1 AVERTISSEMENT (S) AFFECTANT 3 LIGNE (S) -------------------------------------------------- ------------------------------ 1 | AVERTISSEMENT | La ligne dépasse 85 caractères; contient 121 caractères 9 | ERREUR | Commentaire de document de fichier manquant 11 | ERREUR | Ligne indentée incorrectement; 0 espaces prévus, 4 trouvés -------------------------------------------------- ------------------------------
J'ai un problème avec l' erreur " Ligne indentée incorrectement ". Je suppose que cela se produit parce que je mélange l'indentation PHP avec l'indentation HTML. Mais cela le rend plus lisible non? ( en tenant compte du fait que je n'ai pas les ressources pour passer à un framework MVC en ce moment ). Je voudrais donc l'ignorer s'il vous plaît.
Réponses:
J'ai trouvé une solution pour supprimer l' erreur " Ligne indentée incorrectement " mais je dois d'abord dire que dragonmantank a un excellent point - vous ne devez pas mélanger PHP et HTML. C'est une recette pour les maux de tête. Cependant, malheureusement, je pense que mélanger PHP et HTML est très courant, en particulier dans les logiciels hérités.
Le correctif le plus rapide et le plus sale en supposant que nous utilisons les
phpcs
normes de codage par défaut (qui sont les normes PEAR ) est de supprimer le fichier Sniff correspondant. Trouvez l'emplacement des normes PEAR, pour moi, en utilisant Ubuntu , c'était ici:Renommez le
ScopeIndentSniff.php
fichier pour que le sniff qui vérifie l'indentation du code ne soit plus exécuté:Travail effectué - maintenant l'indentation ne sera pas vérifiée et l' erreur " Ligne indentée incorrectement " ne se produira pas ( et votre code ne sera pas standard et ne sera pas d'une telle qualité! ).
La solution ci-dessus est assez amateur - la solution la plus propre consiste à créer une nouvelle norme de codage qui utilise toutes les normes PEAR à l'exception de vos personnalisations choisies à la cerise. C'est très rapide à faire. Voici comment le faire en utilisant
getIncludedSniffs()
etgetExcludedSniffs()
et quelquesphpcs
conventions de dénomination:Testez votre nouvelle norme de codage personnalisée en l'invoquant
phpcs
à l'aide du--standard
drapeau. Par exemple:Une fois que cela fonctionne, vous pouvez définir votre nouvelle norme par défaut, ce qui signifie que vous n'avez pas besoin de taper l'
--standard
indicateur à chaque fois que vous utilisezphpcs
:Voir le manuel phpcs pour plus d'informations.
la source
Vous allez rencontrer de nombreux problèmes lors de l'exécution de PHPCS avec votre code PHP mélangé avec HTML. PHPCS n'est vraiment utile que lorsque vous analysez des scripts PHP purs. Les normes de codage intégrées sont construites autour de PHP pur, pas de PHP / HTML mixte.
Une option serait de créer votre propre standard personnalisé et de l'utiliser à la place. La norme personnalisée prendrait en compte le mélange de code, mais ce serait probablement difficile à écrire.
L'autre option est d'utiliser un système de modèles puisque vous avez dit que vous ne vouliez pas passer à un framework. Smarty et Twig peuvent tous deux être utilisés en dehors d'un framework MVC. Passez à l'un de ceux-ci, puis demandez à PHPCS d'analyser uniquement les fichiers .PHP, pas les fichiers de modèle.
la source