7
Tools dan Linter
Bagian ## Tools adalah bagian terakhir dari enam bagian yang didaftar di Contents (README.md:5-121). Isinya satu daftar datar berisi 12 entri tanpa subjudul pengelompokan, sehingga tidak ada header ekosistem seperti pada bagian bahasa (README.md:363-3762). Ekosistem setiap perkakas hanya terbaca dari deskripsi satu baris di sebelah tautannya. Halaman ini memetakan kedua belas entri ke bahasa yang dijaganya, lalu memisahkan perkakas yang memeriksa dari yang menulis ulang kode.
Peta perkakas ke ekosistem
graph TD
TOOLS["Bagian Tools: 12 entri"] --> JS["JavaScript dan JSX"]
TOOLS --> PHP["PHP"]
TOOLS --> JAVA["Java"]
TOOLS --> RUBY["Ruby"]
TOOLS --> SHELL["Shell"]
TOOLS --> CROSS["Lintas bahasa"]
JS --> ESLINT["ESLint"]
JS --> STD["JavaScript Standard Style"]
PHP --> ECS["EasyCodingStandard"]
PHP --> PINT["Laravel Pint"]
PHP --> SNIFF["PHP_CodeSniffer"]
PHP --> CSFIXER["PHP CS Fixer"]
JAVA --> CHECKSTYLE["Checkstyle"]
RUBY --> RUBOCOP["RuboCop"]
SHELL --> SHELLCHECK["ShellCheck"]
CROSS --> AGENTS["Agents.md"]
CROSS --> CHANGELOG["Conventional Changelog"]
CROSS --> SEMREL["semantic-release"]
style ESLINT fill:#f59e0b,color:#000
style STD fill:#f59e0b,color:#000
style ECS fill:#f59e0b,color:#000
style CHECKSTYLE fill:#f59e0b,color:#000
style SHELLCHECK fill:#f59e0b,color:#000
style AGENTS fill:#f59e0b,color:#000
style SNIFF fill:#2d7d46,color:#fff
style CSFIXER fill:#2d7d46,color:#fff
style PINT fill:#2d7d46,color:#fff
style RUBOCOP fill:#2d7d46,color:#fff
style CHANGELOG fill:#8b5cf6,color:#fff
style SEMREL fill:#8b5cf6,color:#fff
%% fig: Peta perkakas ke ekosistem bahasa
%% desc: Dua belas entri bagian Tools dikelompokkan menurut bahasa yang dijaganya, dan warna memisahkan perkakas pemeriksa, perbaikan, serta penghasil artefak rilis.Warna pada diagram membawa tiga makna. Amber menandai perkakas yang memeriksa atau menetapkan aturan, hijau menandai perkakas yang menulis ulang kode agar sesuai standar, dan ungu menandai perkakas yang menghasilkan artefak turunan dari commit. Satu ekosistem bisa memuat beberapa entri sekaligus: PHP menampung empat perkakas (README.md:3683, README.md:371-3734) dan JavaScript menampung dua (README.md:369-3705).
Peran tiap perkakas
| Ekosistem | Entri | Peran menurut deskripsi | Baris |
|---|---|---|---|
| JavaScript dan JSX | ESLint, JavaScript Standard Style | the pluggable linting utility for JavaScript and JSX; One JavaScript Style to Rule Them All | README.md:369-3705 |
| PHP | EasyCodingStandard, Laravel Pint, PHP_CodeSniffer, PHP Coding Standards Fixer | The Easiest Way to Use Any Coding Standard; an opinionated PHP code style fixer for minimalists; detecting and fixing the violations; fixes your code to follow standards | README.md:3683 dan README.md:371-3734 |
| Java | Checkstyle | checking Java source code for adherence to a Code Standard or set of validation rules | README.md:3666 |
| Ruby | RuboCop | static code analyzer and formatter, based on the community Ruby style guide | README.md:3747 |
| Shell | ShellCheck | a shell script static analysis tool | README.md:3768 |
| Lintas bahasa | Agents.md, Conventional Changelog, semantic-release | A simple, open format for guiding coding agents; Generate changelogs from Git commits; Automated versioning and publishing from commits | README.md:3659, README.md:36710, README.md:37511 |
Tidak setiap entri adalah program yang bisa dijalankan. JavaScript Standard Style dideskripsikan sebagai sebuah standar, bukan sebagai pemeriksa, dan yang menyebut dirinya linting utility hanya ESLint; keduanya berdampingan dalam satu baris berurutan (README.md:369-3705). Perkakas Shell dan Java menjaga aturan yang ditulis di halaman lain: gaya penulisan skrip Shell ada di Development Environment (README.md:248-25012), sementara Checkstyle mengacu pada sebuah Code Standard yang tidak disebutkan namanya (README.md:3666).
Ekosistem PHP yang paling padat
Empat entri PHP bertumpu pada satu sumber standar yang sudah tercatat di bagian bahasa, yaitu PHP FIG (README.md:18013). Perannya berbeda-beda, dan hanya PHP_CodeSniffer yang deskripsinya menyebut deteksi sekaligus perbaikan (README.md:371-3734).
graph LR
ECS["EasyCodingStandard"] -->|"memilih"| STD["Standar tertulis: PHP FIG"]
STD --> SNIFF["PHP_CodeSniffer"]
STD --> CSFIXER["PHP CS Fixer"]
STD --> PINT["Laravel Pint"]
SNIFF -->|"deteksi + perbaikan"| CODE["Kode PHP"]
CSFIXER -->|"perbaikan"| CODE
PINT -->|"perbaikan"| CODE
style ECS fill:#f59e0b,color:#000
style STD fill:#f59e0b,color:#000
style SNIFF fill:#2d7d46,color:#fff
style CSFIXER fill:#2d7d46,color:#fff
style PINT fill:#2d7d46,color:#fff
%% fig: Empat perkakas PHP di depan satu standar
%% desc: EasyCodingStandard memilih standar, lalu PHP_CodeSniffer, PHP CS Fixer, dan Laravel Pint menerapkannya pada kode PHP.Di luar PHP, satu-satunya entri yang menyebut kedua peran itu adalah RuboCop, yang dideskripsikan sebagai static code analyzer and formatter (README.md:3747). Ketiga perkakas PHP lain hanya menyebut perbaikan: Laravel Pint sebagai code style fixer, PHP CS Fixer sebagai perkakas yang fixes your code to follow standards (README.md:371-3734).
Jebakan
⚠️ Perkakas perbaikan menulis ulang berkas, bukan sekadar melaporkan temuan. PHP CS Fixer dan Laravel Pint mengubah kode agar mengikuti standar (README.md:371-3734), sedangkan Checkstyle hanya memeriksa kepatuhan (README.md:3666). Jalankan perbaikan pada working tree yang bersih agar diff-nya mudah ditinjau.
⚠️ Pada berkas Markdown, aturan whitespace justru dilonggarkan.
.editorconfigmematikantrim_trailing_whitespaceuntuk[*.md](.editorconfig:11-12), sementara panduan kontribusi meminta kontributor memastikan editor menghapus whitespace di akhir baris (contributing.md:3114). Untuk berkas.mdyang berlaku adalah.editorconfig, jadi spasi di akhir baris harus dibersihkan manual.
Penegakan di repository ini
Repository ini tidak memakai salah satu dari dua belas perkakas di atas untuk menjaga isinya sendiri. Script test menjalankan awesome-lint (package.json:1-815), dan test.js memanggil awesomeLint.report() (test.js:1-316). Lapisan format diatur .editorconfig, yang menetapkan charset, end_of_line, insert_final_newline, trim_trailing_whitespace, dan indent_size untuk semua berkas (.editorconfig:1-9). Urutan langkah pemeriksaan itu sampai ke CI dibahas di Pipeline Lint dan CI.