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 :
- 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.
- 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:
- namespace-max-files - jumlah file maksimum dalam namespace
- argument-override - melarang mengubah nilai argumen fungsi
- file-max-size - jumlah maksimum baris dalam file
- 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 . , .
- . , .
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:
- temukan semuanya
for
danforeach
. - Ambil token berikutnya
.step()
, itu akan menjadi tanda kurung terbuka(
. Pergi ke tanda kurung penutup.stepToClosing()
. - Ulangi langkah kedua tetapi untuk badan loop (
{
dan}
). - 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.