Carnet Wiki

style code php

Les recommandations pour le code source de SPIP s’appuient sur PSR2 avec quelques modifications (voir doc SPIP.net)

Voici les fichiers de configuration pour :
-  CodeSniffer
-  PhpStorm

Avec CodeSniffer

Rq : php-cs-fixer ne permet pas de corriger les tabulations actuellement.

-   ? Télécharger et installer phpcs https://github.com/squizlabs/PHP_CodeSniffer
-  Créer le fichier de config spipcs.xml en y recopiant les paramètres plus bas
-  Se mettre à la racine du dossier à vérifier et lancer la commande php phpcs.phar --standard=spipcs.xml
-  ou bien se mettre à la racine du spip et lancer php phpcs.phar --standard=spipcs.xml chemin/vers/dossier/a/verifier

Code de phpcs.xml pour SPIP :

-  master : https://gist.github.com/brunob/c92c9b7bfec67aadc149
-  version au 8 décembre :

  1. <?xml version="1.0"?>
  2. <ruleset name="SPIP">
  3. <!--
  4.         Liens utiles
  5.                documentation : http://contrib.spip.net/style-code-php
  6.                 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
  7.                 https://github.com/ucfcdl/fuelphp-phpcs/tree/master/Standards/FuelPHP
  8.                 https://github.com/vanilla/addons/tree/master/standards/Vanilla
  9. -->
  10.  
  11.         <description>Coding rules for SPIP</description>
  12.  
  13.         <exclude-pattern>config/*</exclude-pattern>
  14.         <exclude-pattern>IMG/*</exclude-pattern>
  15.         <exclude-pattern>lib/*</exclude-pattern>
  16.         <exclude-pattern>local/*</exclude-pattern>
  17.         <exclude-pattern>plugins/*</exclude-pattern>
  18.         <exclude-pattern>squelettes/*</exclude-pattern>
  19.         <exclude-pattern>tmp/*</exclude-pattern>
  20.  
  21.         <!-- Appliquer PSR-2 moins nos exceptions -->
  22.         <rule ref="PSR2" >
  23.                 <!-- Désactiver la vérification sur les noms de classes/fonctions -->
  24.                 <exclude name="Squiz.Classes.ValidClassName" />
  25.                 <!-- Désactiver la vérification sur l'indentation -->
  26.                 <exclude name="Generic.WhiteSpace.ScopeIndent" />
  27.                 <exclude name="Generic.WhiteSpace.DisallowTabIndent" />
  28.                 <!-- Désactiver la vérification sur les accolades -->
  29.                 <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine" />
  30.                 <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine" />
  31.                 <exclude name="PSR2.Classes.PropertyDeclaration" />
  32.         </rule>
  33.  
  34.         <!-- Tabulations pour l'indentation -->
  35.         <arg name="tab-width" value="4"/>
  36.         <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
  37.         <rule ref="Generic.WhiteSpace.ScopeIndent">
  38.                 <properties>
  39.                         <property name="indent" value="4"/>
  40.                         <property name="tabIndent" value="true"/>
  41.                 </properties>
  42.         </rule>
  43.  
  44.         <!-- Accolades -->
  45.         <rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie"/>
  46.         <rule ref="Generic.ControlStructures.InlineControlStructure" />
  47.         <rule ref="Squiz.ControlStructures.ControlSignature" />
  48.         <rule ref="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace">
  49.                 <severity>0</severity>
  50.         </rule>
  51.  
  52.         <!-- Guillemets doubles -->
  53.         <rule ref="Squiz.Strings.DoubleQuoteUsage"/>
  54.         <rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar">
  55.                 <severity>0</severity>
  56.         </rule>
  57.        
  58.         <!-- Constantes en majuscules -->
  59.         <rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
  60.  
  61. </ruleset>

Télécharger

CodeStyle SPIP pour PhpStorm

Voir aussi https://gist.github.com/Cerdic/efdb1d5c9318670d19fe

  1. <code_scheme name="SPIP">
  2.   <option name="OTHER_INDENT_OPTIONS">
  3.     <value>
  4.       <option name="INDENT_SIZE" value="2" />
  5.       <option name="CONTINUATION_INDENT_SIZE" value="8" />
  6.       <option name="TAB_SIZE" value="2" />
  7.       <option name="USE_TAB_CHARACTER" value="true" />
  8.       <option name="SMART_TABS" value="false" />
  9.       <option name="LABEL_INDENT_SIZE" value="0" />
  10.       <option name="LABEL_INDENT_ABSOLUTE" value="false" />
  11.       <option name="USE_RELATIVE_INDENTS" value="false" />
  12.     </value>
  13.   </option>
  14.   <option name="SPACE_AROUND_EQUALITY_OPERATORS" value="false" />
  15.   <option name="SPACE_AROUND_RELATIONAL_OPERATORS" value="false" />
  16.   <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="false" />
  17.   <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="false" />
  18.   <option name="SPACE_BEFORE_METHOD_LBRACE" value="false" />
  19.   <option name="SPACE_BEFORE_IF_LBRACE" value="false" />
  20.   <option name="SPACE_BEFORE_WHILE_LBRACE" value="false" />
  21.   <option name="SPACE_BEFORE_FOR_LBRACE" value="false" />
  22.   <PHPCodeStyleSettings>
  23.     <option name="PHPDOC_BLANK_LINE_BEFORE_TAGS" value="true" />
  24.     <option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
  25.     <option name="LOWER_CASE_NULL_CONST" value="true" />
  26.     <option name="BLANK_LINE_BEFORE_RETURN_STATEMENT" value="true" />
  27.     <option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
  28.   </PHPCodeStyleSettings>
  29.   <XML>
  30.     <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
  31.   </XML>
  32.   <codeStyleSettings language="CSS">
  33.     <indentOptions>
  34.       <option name="INDENT_SIZE" value="2" />
  35.       <option name="TAB_SIZE" value="2" />
  36.       <option name="USE_TAB_CHARACTER" value="true" />
  37.     </indentOptions>
  38.   </codeStyleSettings>
  39.   <codeStyleSettings language="CoffeeScript">
  40.     <option name="SPACE_AROUND_EQUALITY_OPERATORS" value="false" />
  41.     <option name="SPACE_AROUND_RELATIONAL_OPERATORS" value="false" />
  42.     <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="false" />
  43.     <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="false" />
  44.     <option name="PARENT_SETTINGS_INSTALLED" value="true" />
  45.   </codeStyleSettings>
  46.   <codeStyleSettings language="HTML">
  47.     <indentOptions>
  48.       <option name="INDENT_SIZE" value="2" />
  49.       <option name="CONTINUATION_INDENT_SIZE" value="2" />
  50.       <option name="TAB_SIZE" value="2" />
  51.       <option name="USE_TAB_CHARACTER" value="true" />
  52.       <option name="SMART_TABS" value="true" />
  53.     </indentOptions>
  54.   </codeStyleSettings>
  55.   <codeStyleSettings language="JavaScript">
  56.     <option name="SPACE_AROUND_EQUALITY_OPERATORS" value="false" />
  57.     <option name="SPACE_AROUND_RELATIONAL_OPERATORS" value="false" />
  58.     <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="false" />
  59.     <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="false" />
  60.     <option name="SPACE_BEFORE_METHOD_LBRACE" value="false" />
  61.     <option name="SPACE_BEFORE_IF_LBRACE" value="false" />
  62.     <option name="SPACE_BEFORE_WHILE_LBRACE" value="false" />
  63.     <option name="SPACE_BEFORE_FOR_LBRACE" value="false" />
  64.     <option name="PARENT_SETTINGS_INSTALLED" value="true" />
  65.     <indentOptions>
  66.       <option name="INDENT_SIZE" value="2" />
  67.       <option name="CONTINUATION_INDENT_SIZE" value="2" />
  68.       <option name="TAB_SIZE" value="2" />
  69.       <option name="USE_TAB_CHARACTER" value="true" />
  70.       <option name="SMART_TABS" value="true" />
  71.     </indentOptions>
  72.   </codeStyleSettings>
  73.   <codeStyleSettings language="LESS">
  74.     <indentOptions>
  75.       <option name="TAB_SIZE" value="2" />
  76.       <option name="USE_TAB_CHARACTER" value="true" />
  77.     </indentOptions>
  78.   </codeStyleSettings>
  79.   <codeStyleSettings language="PHP">
  80.     <option name="BLANK_LINES_AFTER_PACKAGE" value="1" />
  81.     <option name="CLASS_BRACE_STYLE" value="1" />
  82.     <option name="METHOD_BRACE_STYLE" value="1" />
  83.     <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
  84.     <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="false" />
  85.     <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="false" />
  86.     <option name="CALL_PARAMETERS_WRAP" value="1" />
  87.     <option name="METHOD_PARAMETERS_WRAP" value="5" />
  88.     <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
  89.     <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
  90.     <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
  91.     <option name="ARRAY_INITIALIZER_WRAP" value="5" />
  92.     <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
  93.     <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
  94.     <option name="IF_BRACE_FORCE" value="3" />
  95.     <option name="DOWHILE_BRACE_FORCE" value="3" />
  96.     <option name="WHILE_BRACE_FORCE" value="3" />
  97.     <option name="FOR_BRACE_FORCE" value="3" />
  98.     <indentOptions>
  99.       <option name="INDENT_SIZE" value="2" />
  100.       <option name="CONTINUATION_INDENT_SIZE" value="2" />
  101.       <option name="TAB_SIZE" value="2" />
  102.       <option name="USE_TAB_CHARACTER" value="true" />
  103.       <option name="SMART_TABS" value="true" />
  104.     </indentOptions>
  105.   </codeStyleSettings>
  106.   <codeStyleSettings language="SASS">
  107.     <indentOptions>
  108.       <option name="TAB_SIZE" value="2" />
  109.       <option name="USE_TAB_CHARACTER" value="true" />
  110.     </indentOptions>
  111.   </codeStyleSettings>
  112.   <codeStyleSettings language="TypeScript">
  113.     <option name="SPACE_AROUND_EQUALITY_OPERATORS" value="false" />
  114.     <option name="SPACE_AROUND_RELATIONAL_OPERATORS" value="false" />
  115.     <option name="SPACE_AROUND_ADDITIVE_OPERATORS" value="false" />
  116.     <option name="SPACE_AROUND_MULTIPLICATIVE_OPERATORS" value="false" />
  117.     <option name="SPACE_BEFORE_METHOD_LBRACE" value="false" />
  118.     <option name="SPACE_BEFORE_IF_LBRACE" value="false" />
  119.     <option name="SPACE_BEFORE_WHILE_LBRACE" value="false" />
  120.     <option name="SPACE_BEFORE_FOR_LBRACE" value="false" />
  121.     <option name="PARENT_SETTINGS_INSTALLED" value="true" />
  122.   </codeStyleSettings>
  123.   <codeStyleSettings language="XML">
  124.     <indentOptions>
  125.       <option name="INDENT_SIZE" value="2" />
  126.       <option name="CONTINUATION_INDENT_SIZE" value="2" />
  127.       <option name="TAB_SIZE" value="2" />
  128.       <option name="USE_TAB_CHARACTER" value="true" />
  129.     </indentOptions>
  130.   </codeStyleSettings>
  131.   <codeStyleSettings language="yaml">
  132.     <indentOptions>
  133.       <option name="TAB_SIZE" value="2" />
  134.     </indentOptions>
  135.   </codeStyleSettings>
  136. </code_scheme>

Télécharger

CodeStyle SPIP pour Sublime Text

-  master : https://gist.github.com/magikcypress/200f2d2491ba5cc57051fdf6d9412fbd
-  version au 12 mai 2016 :

  1. <?xml version="1.0"?>
  2. <ruleset name="SPIP">
  3. <!--
  4.         Liens utiles
  5.                documentation : http://contrib.spip.net/style-code-php
  6.                 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
  7.                 https://github.com/ucfcdl/fuelphp-phpcs/tree/master/Standards/FuelPHP
  8.                 https://github.com/vanilla/addons/tree/master/standards/Vanilla
  9. -->
  10.  
  11.         <description>Coding rules for SPIP with Sublime text</description>
  12.  
  13.         <exclude-pattern>config/*</exclude-pattern>
  14.         <exclude-pattern>IMG/*</exclude-pattern>
  15.         <exclude-pattern>lib/*</exclude-pattern>
  16.         <exclude-pattern>local/*</exclude-pattern>
  17.         <exclude-pattern>plugins-dist/*</exclude-pattern>
  18.         <exclude-pattern>squelettes/*</exclude-pattern>
  19.         <exclude-pattern>tmp/*</exclude-pattern>
  20.  
  21.         <!-- Appliquer PSR-2 moins nos exceptions -->
  22.         <rule ref="PSR2" >
  23.                 <!-- Désactiver la vérification sur les noms de classes/fonctions -->
  24.                 <exclude name="Squiz.Classes.ValidClassName" />
  25.                 <!-- Désactiver la vérification sur l'indentation -->
  26.                 <exclude name="Generic.WhiteSpace.ScopeIndent" />
  27.                 <exclude name="Generic.WhiteSpace.DisallowTabIndent" />
  28.                 <!-- Désactiver les camel caps sur les fonctions -->
  29.                 <exclude name="Generic.NamingConventions.CamelCapsFunctionName" />
  30.                 <!-- Désactiver la vérification sur les accolades -->
  31.                 <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine" />
  32.                 <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine" />
  33.                 <exclude name="PSR2.Classes.PropertyDeclaration" />
  34.         </rule>
  35.  
  36.         <!-- Tabulations pour l'indentation -->
  37.         <arg name="tab-width" value="4"/>
  38.         <rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
  39.         <rule ref="Generic.WhiteSpace.ScopeIndent">
  40.                 <properties>
  41.                         <property name="indent" value="4"/>
  42.                         <property name="tabIndent" value="true"/>
  43.                 </properties>
  44.         </rule>
  45.  
  46.         <!-- Accolades -->
  47.         <rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie"/>
  48.         <rule ref="Generic.ControlStructures.InlineControlStructure" />
  49.         <rule ref="Squiz.ControlStructures.ControlSignature" />
  50.         <rule ref="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace">
  51.                 <severity>0</severity>
  52.         </rule>
  53.  
  54.         <!-- Guillemets doubles -->
  55.         <rule ref="Squiz.Strings.DoubleQuoteUsage"/>
  56.         <rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar">
  57.                 <severity>0</severity>
  58.         </rule>
  59.        
  60.         <!-- Constantes en majuscules -->
  61.         <rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
  62.  
  63. </ruleset>

Télécharger

JLuc - Mise à jour :23 janvier 2017 à 22h02min