Formatage de code

Hier, je fais du ménage sur mon Mac, en particulier je vire ce vieux PHP 5.6 qui traine là depuis des lustres et hop j’ai réussi à casser l’extension SublimeText qui me servait jusqu’alors à formater le code PHP — essentiellement, mais aussi le code Javascript —, CodeFormatter.

Pour Javascript, pas de souci, j’ai une extension jsPrettier qui fonctionne très bien, pas besoin de plus. Pour PHP j’ai choisi, plutôt que d’essayer de refaire tourner CodeFormatter, d’utiliser PHP CS Fixer qui fait aussi bien le job que CodeFormatter une fois correctement configuré.

J’ai poussé sur les dépôts Dotclear et Clearbricks une première version de ce fichier de configuration, qui pourra être amené à évoluer au fur et à mesure de mes/nos besoins/envies.

Je reprends ce fichier ci-dessous :

<?php

// Adapted from https://gist.github.com/codfish/c77d348820c1c6b4ebe4a66dc2291c74

/**
 * Rules we follow are from PSR-2 as well as the rectified PSR-2 guide.
 *
 * - https://github.com/FriendsOfPHP/PHP-CS-Fixer
 * - https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
 * - https://github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2-R-coding-style-guide-additions.md
 *
 * If something isn't addressed in either of those, some other common community rules are
 * used that might not be addressed explicitly in PSR-2 in order to improve code quality
 * (so that devs don't need to comment on them in Code Reviews).
 *
 * For instance: removing trailing white space, removing extra line breaks where
 * they're not needed (back to back, beginning or end of function/class, etc.),
 * adding trailing commas in the last line of an array, etc.
 */

$finder = PhpCsFixer\Finder::create()
    ->exclude('node_modules')
    ->exclude('vendor')
    ->in(__DIR__);

return PhpCsFixer\Config::create()
    ->setRules([
        '@PSR2' => true,
        'array_indentation' => true,
        'array_syntax' => [ 'syntax' => 'short' ],
        'binary_operator_spaces' => [ 'default' => '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,
        'method_argument_space' => ['ensure_fully_multiline' => false],
        'no_blank_lines_after_class_opening' => true,
        'no_blank_lines_after_phpdoc' => true,
        'no_break_comment' => false,
        'no_extra_consecutive_blank_lines' => true,
        'no_trailing_comma_in_singleline_array' => true,
        'no_whitespace_in_blank_line' => true,
        'no_spaces_around_offset' => 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,
        'single_quote' => true,
        'return_type_declaration' => ['space_before' => 'none'],
        'ternary_to_null_coalescing' => true,
        'trailing_comma_in_multiline_array' => false,
        'trim_array_spaces' => true,
    ])
    ->setFinder($finder);

Si vous voulez des détails sur les options et leurs valeurs possible, je vous conseille un coup d’œil sur ce site (en anglais) qui les explique et les illustre.

Et la doc officielle des règles utilisables dans la configuration.

Tiens, ça serait pas bête que je trie les dernières lignes d’option… À faire la prochaine fois.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/14862

Haut de page