Lompat ke konten
dokumentasi.id
Commit a27b09d
v2
Star11 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

7

Tools dan Linter

Bagian ## Tools adalah bagian terakhir dari enam bagian yang didaftar di Contents (README.md:5-12). Isinya satu daftar datar berisi 12 entri tanpa subjudul pengelompokan, sehingga tidak ada header ekosistem seperti pada bagian bahasa (README.md:363-376). 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.
Fig. 1: Peta perkakas ke ekosistem bahasaDua 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:368, README.md:371-373) dan JavaScript menampung dua (README.md:369-370).

Peran tiap perkakas

EkosistemEntriPeran menurut deskripsiBaris
JavaScript dan JSXESLint, JavaScript Standard Stylethe pluggable linting utility for JavaScript and JSX; One JavaScript Style to Rule Them AllREADME.md:369-370
PHPEasyCodingStandard, Laravel Pint, PHP_CodeSniffer, PHP Coding Standards FixerThe 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 standardsREADME.md:368 dan README.md:371-373
JavaCheckstylechecking Java source code for adherence to a Code Standard or set of validation rulesREADME.md:366
RubyRuboCopstatic code analyzer and formatter, based on the community Ruby style guideREADME.md:374
ShellShellChecka shell script static analysis toolREADME.md:376
Lintas bahasaAgents.md, Conventional Changelog, semantic-releaseA simple, open format for guiding coding agents; Generate changelogs from Git commits; Automated versioning and publishing from commitsREADME.md:365, README.md:367, README.md:375

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-370). Perkakas Shell dan Java menjaga aturan yang ditulis di halaman lain: gaya penulisan skrip Shell ada di Development Environment (README.md:248-250), sementara Checkstyle mengacu pada sebuah Code Standard yang tidak disebutkan namanya (README.md:366).

Ekosistem PHP yang paling padat

Empat entri PHP bertumpu pada satu sumber standar yang sudah tercatat di bagian bahasa, yaitu PHP FIG (README.md:180). Perannya berbeda-beda, dan hanya PHP_CodeSniffer yang deskripsinya menyebut deteksi sekaligus perbaikan (README.md:371-373).

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.
Fig. 2: Empat perkakas PHP di depan satu standarEasyCodingStandard 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:374). 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-373).

Jebakan

⚠️ Perkakas perbaikan menulis ulang berkas, bukan sekadar melaporkan temuan. PHP CS Fixer dan Laravel Pint mengubah kode agar mengikuti standar (README.md:371-373), sedangkan Checkstyle hanya memeriksa kepatuhan (README.md:366). Jalankan perbaikan pada working tree yang bersih agar diff-nya mudah ditinjau.

⚠️ Pada berkas Markdown, aturan whitespace justru dilonggarkan. .editorconfig mematikan trim_trailing_whitespace untuk [*.md] (.editorconfig:11-12), sementara panduan kontribusi meminta kontributor memastikan editor menghapus whitespace di akhir baris (contributing.md:31). Untuk berkas .md yang 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-8), dan test.js memanggil awesomeLint.report() (test.js:1-3). 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.