Carnet Wiki

PSR_SPIP

Version 12 — 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 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 plutôt fournir :

if ($test) { 
    doit();
}

(confirmé par mm )
C’est la règle < code>Squiz . ControlStructures.ControlSignature.NewlineAfterOpenBrace qui est sensée faire faire ça bien et qui, pourtant, fait bien partie de du jeu de régle spip.

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