web-dev-qa-db-fra.com

Comment puis-je supprimer les avertissements PHPCS à l'aide de commentaires?

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
{
    // ...
}
37
gremo

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

70
Greg Sherwood

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

3
Will

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.

0
RevNoah