OOZOU
Hubungi Kami
Kembali ke TIL
ruby

Menjalankan Rubocop sebelum Commit

13 Oktober 2020

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

  1. Pasang Rubocop dan alat pre-commit hook pilihan Anda (misalnya Husky atau Pre-commit).
  2. Buat file baru bernama pre-commit di direktori .git/hooks.
  3. Tambahkan perintah Rubocop ke file pre-commit, misalnya rubocop -a.
  4. Jadikan file pre-commit executable dengan menjalankan chmod +x .git/hooks/pre-commit.
  5. 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.

Lainnya tentang ruby

ruby30 April 2021

Mengizinkan Paste Blok Ruby Multibaris di Pry Saat Menggunakan Notasi Titik di Awal

Sekarang kami sering menggunakan notasi titik di awal baris, misalnya:

ruby14 Oktober 2020

Heredoc tanpa Interpolasi

Terkadang Anda ingin menggunakan Heredoc di Ruby tanpa interpolasi ('#{....}'). Anda dapat melakukannya dengan menambahkan tanda kutip tunggal di sekitar kata kunci Anda:

ruby13 Oktober 2020

Hashtable Tingkat Menengah yang Terbentuk Otomatis di Ruby

Semua hashtable tingkat menengah akan dibuat secara otomatis

Punya proyek yang ingin diwujudkan?

Kami ingin mendengar apa yang sedang Anda bangun.

Mulai Percakapanhello@oozou.com
OOZOU Logo

Bangkok · Singapura · Hong Kong

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

Layanan

  • Pengembangan Web
  • Agen AI & Generative AI
  • Pengembangan Aplikasi Mobile
  • Analitik Data & Data Engineering
  • Desain UI/UX & Produk
  • Transformasi Digital

Perusahaan

  • Tentang Kami
  • Karier
  • Blog
  • Studi Kasus
  • Demo Langsung
  • Today I Learned
  • Hubungi Kami

Lainnya

  • Industri
  • Jaringan Mitra
© 2026 OOZOU. Hak cipta dilindungi undang-undang.
Kebijakan PrivasiKode EtikKebijakan ABAC