Bon, après avoir (un peu) galéré dessus, je vais finalement utiliser ce fichier de configuration (nommé .php-cs-fixer.dist.php pour le formatage du code PHP :
<?php
// See https://mlocati.github.io/php-cs-fixer-configurator/#version:3.2 for documentation
$finder = PhpCsFixer\Finder::create()
->exclude('node_modules')
->exclude('vendor')
->in(__DIR__);
$config = new PhpCsFixer\Config();
return $config
->setRules([
'@PSR12' => true,
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => [
'default' => 'align_single_space_minimal',
'operators' => [
'=>' => 'align_single_space_minimal',
]
],
'blank_line_before_statement' => true,
'braces' => ['allow_single_line_closure' => true],
'cast_spaces' => true,
'combine_consecutive_unsets' => true,
'concat_space' => ['spacing' => 'one'],
'linebreak_after_opening_tag' => true,
'no_blank_lines_after_phpdoc' => true,
'no_break_comment' => false,
'no_extra_blank_lines' => true,
'no_spaces_around_offset' => true,
'no_trailing_comma_in_singleline_array' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_return' => true,
'no_whitespace_before_comma_in_array' => true,
'normalize_index_brace' => true,
'phpdoc_indent' => true,
'phpdoc_to_comment' => true,
'phpdoc_trim' => true,
'return_type_declaration' => ['space_before' => 'none'],
'single_quote' => true,
'ternary_to_null_coalescing' => true,
'trailing_comma_in_multiline' => false,
'trim_array_spaces' => true,
])
->setFinder($finder);
J’ai une version de ce fichier à la racine de mon dossier utilisateur sur le Mac, un identique dans le dépôt Dotclear et encore un identique dans le dépôt Clearbricks.
Au passage je suis passé de la « norme » PSR-2 à la « norme » PSR-12 qui la remplace et le reste des règles est ce qu’il y a de moins perturbateur par rapport au formatage historique, ou quasi.
1 De JcDenis -
Je te le pique. Et effectivement ça ne chamboule pas trop le code par rapport à avant.
2 De Nicolas -
Une autre option sympa est l’ajout de l’entête (copyright,…) :
'header_comment' => ['comment_type' => 'comment', 'header' => $header, 'location' => 'after_open', 'separate' => 'bottom'],
avec par exemple pour header :
$header = <<<'EOF' /** * @brief Dotclear core class * * True to its name dcCore is the core of Dotclear. It handles everything related * to blogs, database connection, plugins... * * @package Dotclear * @subpackage Core * * @copyright Olivier Meunier & Association Dotclear * @copyright GPL-2.0-only */ EOF;
Bon je n’arrive pas à formater correctement mon commentaire mais tu vois l’idée.
3 De Franck -
Oui je vois l’idée Nicolas (pour le formatage de code, c’est la syntaxe Markdown qui prévaut dans les commentaires, donc pour les blocs, trois backticks avant — voire même avec language-php par exemple pour préciser la syntaxe juste après les 3 backticks du début — et après et ça roule ;-)
Donc :
Et :
4 De JcDenis -
Je n’y comprend pas encore tout, mais vers le début, il n’y aurait pas besoin d’un
->exclude('libs')
5 De Franck -
Éventuellement JcDenis mais comme ça ne s’applique qu’au moment de l’ouverture dans l’éditeur, ça n’a pas beaucoup d’importance.
Ça en aurait par contre si on faisait faire le formatage par de l’intégration continue, comme avec les tests unitaires et l’analyse syntaxique.
6 De Franck -
Pour préciser les choses, libs contient (uniquement) Clearbricks, et ce dernier je l’édite/modifie indépendamment dans son propre dépôt.
Après ça dépend des projets, évidemment !
7 De JcDenis -
Oui c’est vrai que j’ai transposé ce que je fais pour les plugins ou je mets réellement les librairies externes dans un dossier libs.
8 De Franck -
J’ai tendance à les mettre dans un dossier vendor (ou vendors s’il y’en a plus d’une)