Voir aussi :
- Outils pour la conformité du php avec les PSR-12
- https://mlocati.github.io/php-cs-fixer-configurator/ : menu des règles
Les recommandations pour le code source de SPIP s’appuient sur PSR2 avec des modifications (voir doc SPIP.net).
On est donc plus proche de PSR2R=PSR2 rectified mais des jeux de règles plus spécifiques à SPIP ont été élaborés.
Mise en oeuvre
Doc : Outils pour la conformité du php avec les PSR-12
Jeu de règles pour SPIP
- La version connue la plus aboutie est : https://gist.github.com/JLuc/1dbd8aa422f683efabc08138b34704a4
- Eric (part de PSR2 et) enlève les braces et indentention_type
Évolutions envisagées
- améliorer le jeu de règles si nécessaire
- améliorer le fixer (voir plus loin « correction inline »)
- le mettre en hook post commit d’une forge
* avec mantis sur github
* avec drone sur le gitea de git.spip.net
Corrections
- les différentes sortes de tabulations du codestyle de cerdic font toutes 2 espaces de large
- > 4 c’est mieux
Règles à ajouter ?
Correction d’instruction inline sur même ligne
La règle Generic.ControlStructures.InlineControlStructure.NotAllowed
du fixer ajoute des accolades autour des instructions inline, mais dans certains cas, il laisse ces instructions sur la même ligne et c’est moche.
Par exemple typiquement il corrige
if ($test) doit();
en
if ($test) {
doit();
}
Il devrait fournir :
if ($test) {
doit();
}
elseif
Selon PSR2SPIP Les elseif doivent être sur la ligne de l’accolade fermante du if précédent
if ($untest) {
$index = $donnees['index'];
include_spip('about_truc')
$truc = get_truc($index);
} elseif ($autrecas) {
$index = $donnees['index'];
include_spip('about_truc')
$truc = get_truc($index);
}
mais il semblerait agréable de reporter le elseif à la ligne suivant l’accolade fermante
if ($untest) {
$index = $donnees['index'];
include_spip('about_truc')
$truc = get_truc($index);
}
elseif ($autrecas) {
$index = $donnees['index'];
include_spip('about_truc')
$truc = get_truc($index);
}