lesbar - ein weiterer Linter für PHP

Ich möchte einen PHP- lesbaren Linter vorstellen . Es enthält jetzt 16 Regeln, die die Lesbarkeit des Codes verbessern sollen. Die Hauptvorteile sind:



  • Geschwindigkeit - weniger als eine Sekunde pro 1000 Dateien
  • Grundeinstellung - Sie können nicht alle Fehler im Projekt gleichzeitig beheben, sondern eine Konfiguration mit aktuellen Fehlern erstellen. Und ignoriere sie, aber reagiere auf neue.
  • Regeln sind einfacher zu schreiben als Analoga (subjektiv)




Zwei wichtige Haftungsausschlüsse :



  1. Ich bin der Hauptverantwortliche, also kann ich subjektiv sein. Readable wurde ursprünglich für den belgischen Firmenbeamten geschrieben . Sie verwenden es seit einiger Zeit intern und haben beschlossen, ein Open-Source-Projekt lesbar zu machen.
  2. Es ist in JS geschrieben.


Installation und Start



lesbar wird über npm installiert:



$ npm install @officient/readable --save-dev


Nach der Installation müssen Sie eine Konfigurationsdatei erstellen:



$ npx readable --init


Und du kannst rennen:



$ npx readable


Regeln



Derzeit sind 16 Regeln lesbar:



  1. Namespace-Max-Dateien - Maximale Anzahl von Dateien im Namespace
  2. argument-override - Verbietet das Ändern des Werts von Funktionsargumenten
  3. file-max-size - Die maximale Anzahl von Zeilen in der Datei
  4. empty-catchcatch
  5. class-comment — - ,
  6. forbidden-functions — (eval, print_r ...)
  7. missing-bracesif, for ...
  8. variable-length — ( $id, $i)
  9. function-max-size
  10. loop-max-size
  11. forbidden-function-prefix — . , checkSomething — , ?
  12. if-assigmentif
  13. complex-if&& || if
  14. ternary-max-length
  15. loop-max-nest
  16. max-nest




readable , . — . , - , :



  1. readable . , .
  2. . , .


Nehmen wir als Beispiel die Regel für die maximale Größe der Schleife . Sein ganzer 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());
      }
    });
  },
};


Die Regel lautet:



  1. finde alles forund foreach.
  2. Nehmen Sie das nächste Zeichen .step(), es wird eine offene Klammer sein (. Gehen Sie zur schließenden Klammer .stepToClosing().
  3. Wiederholen Sie den zweiten Schritt bis auf den Körper der Schleife ( {und }).
  4. Überprüfen Sie die Länge des Fahrradkörpers.


Anstelle einer Schlussfolgerung



Ich verwende Readable in meinen Projekten als zusätzlichen Linter für Code. Ich mag alles, besonders die Grundlinie (fairerweise hat Psalm dies auch). Er hat die Möglichkeit, die Nische des Hilfsliners zu besetzen.




All Articles