Menjalankan Rubocop sebelum Commit
Pendahuluan
Git hook sangat ampuh untuk mengotomatiskan tugas dan menegakkan standar penulisan kode di repository Git. Salah satu penggunaan umum Git hook adalah menjalankan test otomatis dan alat analisis kode sebelum sebuah commit diizinkan. Dalam artikel ini, kita akan membahas pre-commit hook, cara melewatinya, dan cara menyiapkan pre-commit hook untuk menjalankan Rubocop, alat analisis kode untuk Ruby.
Apa Itu Rubocop?
Rubocop adalah alat analisis kode statis untuk Ruby yang memeriksa kode dari sisi gaya penulisan dan masalah keamanan. Alat ini populer di kalangan developer Ruby untuk memastikan kode mereka mengikuti Ruby style guide dan praktik terbaik. Rubocop dapat dijalankan secara manual, tetapi mengintegrasikannya dengan pre-commit hook memastikan kode diperiksa secara otomatis sebelum setiap commit.
Salin ini ke .git/hooks/pre-commit (hapus .sample)
#!/usr/bin/env ruby
require 'english'
require 'rubocop'
ADDED_OR_MODIFIED = /A|AM|^M/.freeze
changed_files = `git status --porcelain`.split(/\n/).
select { |file_name_with_status|
file_name_with_status =~ ADDED_OR_MODIFIED
}.
map { |file_name_with_status|
file_name_with_status.split(' ')[1]
}.
select { |file_name|
File.extname(file_name) == '.rb'
}.join(' ')
system("rubocop #{changed_files}") unless changed_files.empty?
exit $CHILD_STATUS.exitstatus
Jadikan file tersebut executable
$ chmod +x .git/hooks/pre-commit
Selesai. Mulai sekarang, rubocop akan dijalankan terhadap perubahan Anda dan mencegah commit sampai Anda memperbaiki pelanggaran yang ditemukan.
Bagaimana cara melewati pre-commit? Cukup tambahkan -n ke git commit
$ git commit -n -m "[hotfix] blah blah"
Apa Itu Pre-Commit Hook?
Pre-commit hook adalah Git hook di sisi klien yang berjalan sebelum sebuah commit dibuat. Hook ini berupa script yang dapat melakukan berbagai hal, seperti menjalankan test otomatis, memeriksa gaya penulisan kode, atau menegakkan standar penulisan kode. Jika pre-commit hook gagal, commit dibatalkan dan Anda harus memperbaiki masalahnya sebelum melakukan commit lagi.
Mengapa Menjalankan Rubocop sebelum Commit
Menjalankan Rubocop sebelum commit memiliki beberapa keuntungan:
- Kualitas kode: Rubocop memeriksa kode dari sisi gaya penulisan dan masalah keamanan sehingga codebase tetap konsisten dan aman.
- Hemat waktu: Dengan menjalankan Rubocop secara otomatis sebelum commit, Anda dapat menemukan masalah lebih awal dan tidak membuang waktu untuk debugging di kemudian hari.
- Kolaborasi: Dengan menegakkan standar penulisan kode, pre-commit hook mendorong kolaborasi dan konsistensi di antara anggota tim.
Cara menyiapkan pre-commit hook
- Pasang Rubocop dan alat pre-commit hook pilihan Anda (misalnya Husky atau Pre-commit).
- Buat file baru bernama pre-commit di direktori .git/hooks.
- Tambahkan perintah Rubocop ke file pre-commit, misalnya rubocop -a.
- Jadikan file pre-commit executable dengan menjalankan chmod +x .git/hooks/pre-commit.
- Uji pre-commit hook dengan menjalankan git commit -m “Test commit”
Catatan: Jika Anda ingin melewati pre-commit hook untuk sementara, Anda dapat memakai opsi --no-verify pada perintah git commit, misalnya git commit -m “Test commit” --no-verify.