Mon TestMyClass.php
a deux définitions de classe dans le même fichier (classe de test unitaire), et PHP Code Sniffer se plaint de chaque classe doit figurer dans un fichier à part . Comment puis-je supprimer cet avertissement?
class MyClassImpl implements MyInterface
{
// ...
}
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// ...
}
Vous pouvez faire en sorte que PHP_CodeSniffer ignore des fichiers ou des lignes spécifiques dans un fichier en utilisant les commentaires: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and -folders
Dans ce cas, l'erreur sera générée sur votre deuxième définition de classe, vous devrez donc écrire votre deuxième définition comme ceci:
// @codingStandardsIgnoreStart
class MyClassTest extends \PHPUnit_Framework_TestCase
{
// @codingStandardsIgnoreEnd
// ...
}
Mais vous pouvez également choisir d'ignorer tout le fichier s'il n'est pas censé être vérifié, en utilisant le commentaire @codingStandardsIgnoreFile ou en spécifiant des exclusions sur la ligne de commande (voir le lien précédent pour plus d'informations).
Si vous constatez que vous le faites souvent et que vous ne souhaitez pas ajouter de commentaires à votre code, vous pouvez également créer votre propre norme de codage personnalisée. En supposant que vous utilisiez la norme PSR2 à l’heure actuelle, créez un fichier XML (par exemple, mystandard.xml) et incluez le contenu suivant:
<?xml version="1.0"?>
<ruleset name="MyStandard">
<description>My custom coding standard.</description>
<rule ref="PSR2" />
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
<severity>0</severity>
</rule>
</ruleset>
Puis lancez PHP_CodeSniffer comme ceci: phpcs --standard=/path/to/mystandard.xml /path/to/code
Avoir votre propre ensemble de règles vous permet de faire beaucoup de choses, y compris changer les messages d'erreur, la gravité ou le type d'un message, y compris les vérifications à partir d'autres normes et la définition de règles d'ignorance globales. Plus d'infos ici: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml
La syntaxe @codingStandards
est obsolète à partir de la version 3.2.0
, utilisez plutôt phpcs
.
Quelques exemples:
// phpcs:disable
// phpcs:ignore
// phpcs:enable
Consultez cette page pour plus d'informations: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-parts-of-a-file
Cela a légèrement changé. Utilisez phpcs:ignoreFile
pour phpcs 3.2.x
/* phpcs:ignoreFile */
De la documentation de squizlabs liée par Ahmad:
Note: Avant PHP_CodeSniffer version 3.2.0, utilisez // @codingStandardsIgnoreFile au lieu de // phpcs: ignoreFile. Le La syntaxe @codingStandards est obsolète et sera supprimée dans PHP_CodeSniffer version 4.0.