dapat dibaca - linter lain untuk PHP

Saya ingin memperkenalkan linter PHP yang dapat dibaca . Sekarang berisi 16 aturan yang harus meningkatkan keterbacaan kode. Keuntungan utama meliputi:



  • kecepatan - kurang dari satu detik per 1000 file
  • pengaturan dasar - Anda tidak dapat memperbaiki semua kesalahan dalam proyek sekaligus, tetapi membuat konfigurasi dengan kesalahan saat ini. Dan abaikan mereka, tetapi bereaksi terhadap yang baru.
  • aturan lebih mudah ditulis daripada analog (subyektif)




Dua penafian penting :



  1. Saya adalah kontributor utama, jadi saya bisa subjektif. Dapat dibaca pada awalnya ditulis untuk pejabat perusahaan Belgia . Mereka telah menggunakannya secara internal untuk beberapa waktu sekarang, dan memutuskan untuk membuat proyek open source yang dapat dibaca.
  2. Itu ditulis dalam JS.


Instalasi dan peluncuran



dapat dibaca diinstal melalui npm:



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


Setelah instalasi, Anda perlu membuat file konfigurasi:



$ npx readable --init


Dan Anda dapat menjalankan:



$ npx readable


aturan



Saat ini ada 16 aturan yang dapat dibaca:



  1. namespace-max-files - jumlah file maksimum dalam namespace
  2. argument-override - melarang mengubah nilai argumen fungsi
  3. file-max-size - jumlah maksimum baris dalam file
  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. . , .


Mari kita ambil aturan loop-max-size sebagai contoh . Semua kodenya:



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());
      }
    });
  },
};


Aturan menyatakan:



  1. temukan semuanya fordan foreach.
  2. Ambil token berikutnya .step(), itu akan menjadi tanda kurung terbuka (. Pergi ke tanda kurung penutup .stepToClosing().
  3. Ulangi langkah kedua tetapi untuk badan loop ( {dan }).
  4. Periksa panjang tubuh siklus.


Alih-alih sebuah kesimpulan



Saya menggunakan readable dalam proyek saya sebagai linter tambahan untuk kode. Saya suka semuanya, terutama baseline (dalam keadilan, Mazmur juga punya ini). Dia memiliki kesempatan untuk menempati ceruk pelengkap pembantu.




All Articles