Carnet Wiki

PSR_SPIP

Version 11 — May 2019 JLuc

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 tester la conformité d’un code php avec les PSR-12

Jeu de règles pour SPIP
La version connue la plus aboutie est : https://gist.github.com/marcimat/0e83a42334ecdb0b9e31d4dd7cb97963

Évolutions envisagées


-  améliorer le jeu de règles si nécessaire
-  améliorer le fixer
-  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</code >   du  Le  fixer ajoute  des  accolades  autour  des  instructions  inline ,  mais  dans  certains  cas ,  il  laisse ces  les  instructions sur la même  ligne et  c'est  après  avoir  ajouté  une  accolade  ouvrante ,  ce  qui  produit  un  code  moche.


Par exemple typiquement il corrige
<code>
if ($test) doit();

en

if ($test) { doit();
}

Il devrait plutôt fournir :

if ($test) { 
    doit();
}

(confirmé par mm)

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 serait 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);
}