Mengabaikan Bundled Gems untuk Rubocop dan ESLint di GitHub Actions
Proyek Rails sering menginstal gem ke direktori vendor di GitHub Actions agar gem tersebut dapat di-cache untuk eksekusi berikutnya.
Jika Anda menggunakan code linter di dalam action, Anda perlu mengecualikan vendor/bundle/\* untuk mencegah false positive
Untuk ESLint, hal ini dapat dikonfigurasi melalui ignorePatterns
// ./.eslintrc.json
{
"ignorePatterns": [
"vendor/bundle/*"
]
}
Untuk Rubocop, Anda dapat mengecualikannya melalui konfigurasi AllCops
# ./.rubocop.yml
AllCops:
Exclude:
- 'vendor/**/*'
Pentingnya Mengabaikan Bundled Gems pada Code Linter
Dalam pengembangan perangkat lunak, menjaga kualitas kode yang tinggi sangatlah penting. Code linter adalah alat yang membantu mencapainya dengan melakukan analisis kode statis, yang dapat mendeteksi potensi error dan menerapkan gaya penulisan kode yang konsisten. Namun, saat menggunakan linter di lingkungan continuous integration seperti GitHub Actions, Anda wajib mengonfigurasinya dengan benar untuk menghindari false positive.
Bundled gems, yang biasanya disimpan di direktori vendor, adalah dependensi kode eksternal yang dapat ditandai oleh code linter jika tidak dikecualikan dengan benar. Dengan mengabaikan direktori ini, Anda memastikan linter berfokus pada kode sumber Anda, bukan pada library eksternal, sehingga integritas analisis kode Anda tetap terjaga.
Mengonfigurasi Linter untuk Mengecualikan Bundled Gems
Untuk proyek JavaScript yang menggunakan ESLint, Anda dapat mengonfigurasi linter agar mengabaikan direktori vendor/bundle/* melalui pengaturan ignorePatterns di file .eslintrc.json. Dengan begitu, hanya kode Anda yang diperiksa, sehingga kualitas kode meningkat tanpa gangguan yang tidak perlu.
// ./.eslintrc.json
{
"ignorePatterns": [
"vendor/bundle/*"
]
}
Demikian pula, untuk proyek Ruby yang menggunakan Rubocop, Anda dapat mengecualikan direktori vendor dengan menambahkan aturan Exclude di bawah AllCops pada file konfigurasi .rubocop.yml. Ini membantu analisis kode statis tetap berfokus pada kode sumber Anda yang sebenarnya.
# ./.rubocop.yml
AllCops:
Exclude:
- 'vendor/**/*'
Dengan mengonfigurasi code linter agar mengecualikan bundled gems, Anda dapat menjaga standar kualitas kode yang tinggi sekaligus menghindari false positive dalam analisis kode statis.