Je voudrais vous présenter un linter lisible en PHP . Il contient désormais 16 règles qui devraient améliorer la lisibilité du code. Les principaux avantages comprennent:
- vitesse - moins d'une seconde pour 1000 fichiers
- paramètre de base - vous ne pouvez pas corriger toutes les erreurs du projet à la fois, mais créer une configuration avec les erreurs actuelles. Et ignorez-les, mais réagissez aux nouvelles.
- les règles sont plus faciles à écrire que les analogues (subjectif)
Deux avertissements importants :
- Je suis le principal contributeur, donc je peux être subjectif. Readable a été initialement écrit pour le dirigeant belge . Ils l'utilisent en interne depuis un certain temps maintenant et ont décidé de rendre lisible un projet open source.
- Il est Ă©crit en JS.
Installation et lancement
readable est installé via npm:
$ npm install @officient/readable --save-dev
Après l'installation, vous devez créer un fichier de configuration:
$ npx readable --init
Et vous pouvez exécuter:
$ npx readable
règles
Il existe actuellement 16 règles en lecture:
- namespace-max-files - nombre maximum de fichiers dans l'espace de noms
- argument-override - interdit de changer la valeur des arguments de fonction
- file-max-size - le nombre maximum de lignes dans le fichier
- empty-catch —
catch
- class-comment — - ,
- forbidden-functions — (
eval
,print_r
...) - missing-braces —
if
,for
... - variable-length — (
$id
,$i
) - function-max-size —
- loop-max-size —
- forbidden-function-prefix — . ,
checkSomething
— , ? - if-assigment —
if
- complex-if —
&&
||
if
- ternary-max-length —
- loop-max-nest —
- max-nest —
readable , . — . , - , :
- readable . , .
- . , .
Prenons la règle loop-max-size comme exemple . Tout son code:
const loops = ['for', 'foreach'];
module.exports = {
check(maxLines, tokens, report) {
tokens.matchAll(loops, (token) => {
const end = token.copy().step().stepToClosing(); // skip ()
end.step().stepToClosing();
const lines = (end.current().line - token.current().line);
if (lines > maxLines) {
report(`Loop is longer than ${maxLines} lines [${lines}].`, token.current());
}
});
},
};
La règle stipule:
- trouver tout
for
etforeach
. - Prenez le jeton suivant
.step()
, ce sera une parenthèse ouverte(
. Accédez à la parenthèse fermante.stepToClosing()
. - Répétez la deuxième étape mais pour le corps de la boucle (
{
et}
). - VĂ©rifiez la longueur du corps du cycle.
Au lieu d'une conclusion
J'utilise readable dans mes projets comme linter supplémentaire pour le code. J'aime tout, en particulier la ligne de base (en toute honnêteté, Psalm a aussi ça). Il a l'opportunité d'occuper la niche du linter auxiliaire.