Paquet spip-league/easy-coding-standard

Bonjour,

J’ai mis en place spip-league / easy-coding-standard · GitLab qui peut être utilisé en outil de dev dans les projets pour faciliter la configuration de « ecs.php », c’est à dire de l’outil easy-coding-standard.

Cet outil ECS permet d’appliquer donc des formatages pour le code PHP, en s’appuyant

  • soit sur des règles de php-cs-fixer
  • soit sur des règles de php_codesniffer
    qui sont les 2 gros outils pour faire cela habituellement.

Le tout avec une configuration lisible, la même que Rector par ailleurs.

Dans spip-league/easy-coding-standard (1.0) on y déclare une « setlist », avec certaines propriétés appliqués dessus (notamment l’indentation « tab » hum :thinking: , ce qui est hors des préconisations PHP PER donc).

Le fichier ecs.php résultant dans un projet peut donc simplement y décrire la liste des fichiers et répertoire sur lequel appliquer le traitement, par exemple

<?php

use SpipLeague\EasyCodingStandard\Set\SetList;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
	->withSets([SetList::SPIP])
	->withPaths([__DIR__])
	->withRootFiles()
	->withSkip([__DIR__ . '/lang', __DIR__ . '/vendor'])
;

Dans le cas d’une librairie (pas un plugin SPIP actuel), en général on écrirait qqc comme cela :

<?php

use SpipLeague\EasyCodingStandard\Set\SetList;
use Symplify\EasyCodingStandard\Config\ECSConfig;

return ECSConfig::configure()
	->withSets([SetList::SPIP])
	->withPaths([__DIR__ . '/src', __DIR__ . '/tests'])
	->withRootFiles()
;

À noter que pour pouvoir installer correctement cet outil sur un projet, il faut donc un fichier composer.json d’une part, la déclaration de notre dépot Composer « spip »

composer config repositories.spip composer https://get.spip.net/composer
composer req --dev spip-league/easy-coding-standard

Cet outil peut donc remplacer a priori spip/coding-standard qui était géré par James

4 « J'aime »

Cet outil ECS permet d’appliquer donc des formatages pour le code PHP, en s’appuyant

soit sur des règles de php-cs-fixer
soit sur des règles de php_codesniffer
qui sont les 2 gros outils pour faire cela habituellement.

du coup si je comprend bien les phpcs.xml.dist peuvent être interprété par cet outil ’

Heu, pas à ma connaissance… il faut indiquer ce que tu souhaites explicitement dans le fichier ecs.php

Alors je n’ai pas compris encore ce qu’on appelle « les règles de php-cs-fixer »

alors déjà phpcs.xml.dist c’est pour php_codesniffer :slight_smile: pas php-cs-fixer (qui utilise .php-cs-fixer.dist.php ! mais peut importe, c’est pareil

Mais les règles tu les indiques dans ecs.php avec withSets() ou withRules() explicitement (en appelant la classe de l’un ou l’autre que tu souhaites utiliser). Sachant que ecs par défaut propose des règles «standard» que tu peux activer avec withPreparedSets() , de même que n’importe quel set de php-cs-fixer existant avec withPhpCsFixerSets(). Voir easy-coding-standard/src/Configuration/ECSConfigBuilder.php at 3dd27d701a486dfd65156c9cb8e2de5cd78a27c4 · easy-coding-standard/easy-coding-standard · GitHub par exemple

Dans le cas de la setlist SPIP, je charge cela par défaut : config/spip.php · main · spip-league / easy-coding-standard · GitLab

Notamment psr12: true, auquel après j’adapte quelques règles ensuite.
Si tu regarde les use du fichier, tu verras qu’il y a des règles qui viennent de l’un ou l’autre des projets.

ah bah je comprend mieux pourquoi je ne comprenais pas si je confondais 2 composant ^^

Merci en tout cas. Bon je ferais une migration à l’occasion sur un projet ((qui commence par sai et fini par sies).

J’ai mis spip/coding-standards en « abandonné » avec ce nouveau package en suggestion de remplacement : spip/coding-standards - Packagist

2 « J'aime »