Implementasi Pre-Commit Git Hook untuk Memastikan Kode Tanpa Error

Implementasi Pre-Commit Git Hook untuk Memastikan Kode Tanpa Error

Pengembangan perangkat lunak yang efektif dan berkualitas membutuhkan langkah-langkah yang hati-hati sepanjang siklus pengembangan. Salah satu aspek penting dari proses ini adalah memastikan bahwa setiap commit yang masuk ke repositori memenuhi standar kualitas tertentu. Dalam artikel ini, kita akan membahas implementasi Git Hooks Pre-Commit, sebagai tools untuk meningkatkan kualitas kode sebelum dilakukan commit.

Secara konseptual, Git hooks adalah skrip-skrip khusus yang dieksekusi oleh Git setiap kali ada peristiwa tertentu di dalam repositori. Fungsinya mirip seperti pemberitahuan yang memberitahu Git untuk melakukan sesuatu saat kejadian khusus terjadi.

Skrip-skrip ini bisa dikonfigurasi di repositori lokal atau di server, tergantung di mana kita ingin menjalankan tindakan kustom. Contohnya, jika kita ingin menjalankan suatu skrip atau perintah secara otomatis setiap kali ada yang melakukan commit, kita dapat menggunakan Git hook yang disebut “pre-commit hook”. Begitu juga dengan berbagai peristiwa lainnya, seperti sebelum melakukan push atau setelah melakukan merge.

Git Hooks Pre Commit

Mari kita bayangkan Git Hooks Pre Commit seperti alarm pintu rumah Anda. Alarm ini terpasang di pintu masuk rumah Anda dan berbunyi setiap kali ada sesuatu yang mencurigakan sebelum Anda keluar atau masuk ke rumah.

Setiap kali Anda hendak keluar atau masuk ke rumah (melakukan commit), alarm pintu (Git Hooks Pre Commit) menyala dan memeriksa apakah semuanya aman dan sesuai. Jika ada hal yang mencurigakan, seperti kunci yang tertinggal di luar (kesalahan kode), alarm akan berbunyi, memberi tahu Anda bahwa ada sesuatu yang perlu diperbaiki sebelum melanjutkan.

Dengan analogi ini, Git Hooks Pre Commit berperan sebagai alarm pintu yang membantu menjaga keamanan dan keberlanjutan rumah (proyek) Anda, memastikan bahwa setiap “masuk” atau “keluar” dari rumah (commit) dilakukan dengan aman dan sesuai standar keamanan.

Jadi dapat disimpulkan, Git hooks pre-commit adalah skrip khusus yang dijalankan otomatis oleh Git sebelum proses commit dilakukan. Tujuan utamanya adalah memeriksa dan mengontrol perubahan yang akan dicommit memenuhi standar kualitas tertentu. Pre-commit hook dijalankan secara lokal di mesin pengembang sebelum commit dibuat, sehingga dapat digunakan untuk mendeteksi kesalahan lebih awal dan mencegahnya dari dicommit.

Contoh Tugas Git Hooks Pre Commit:

Berikut beberapa contoh tugas yang dapat dilakukan menggunakan pre-commit hook:

  1. Code Formatting: Pre-commit hook dapat digunakan untuk memastikan bahwa kode yang akan di-commit diformat dengan benar sesuai dengan panduan gaya atau konvensi tertentu.
  2. Linting: Pre-commit hook dapat digunakan untuk menjalankan alat analisis statis seperti Pylint atau Flake8 untuk memeriksa kode terhadap kesalahan umum atau pelanggaran gaya.
  3. Testing: Pre-commit hook dapat digunakan untuk menjalankan pengujian otomatis untuk memastikan bahwa kode yang akan di-commit lulus semua pengujian.

Proses Standarisasi Git Hooks Pre Commit

Proses Standarisasi Pre-Commit adalah serangkaian langkah penting untuk memastikan kualitas dan konsistensi kode sebelum dilakukan commit dalam pengembangan perangkat lunak. Proses Standarisasi Pre-Commit digambarkan seperti memeriksa tas sebelum pergi ke perjalanan penting. Pertama, kita periksa apakah ada barang yang mungkin tertinggal atau rusak di dalam tas, mirip dengan langkah pertama “Check Error Code” yang memeriksa kemungkinan kesalahan dalam kode. Kemudian, kita pastikan tidak membawa sesuatu yang bisa menyebabkan masalah selama perjalanan, mirip dengan “Check Code yang Memungkinkan Bug” yang mengecek potensi bugs sebelum menjalankan kode.

Setelah itu, kita pastikan penampilan dan tata letak barang-barang di dalam tas sesuai dengan aturan tata cara yang telah ditentukan, seperti “Check Standard Code” yang mengecek apakah penulisan kode sesuai dengan aturan standar. Akhirnya, kita memastikan tidak ada barang yang tidak diperlukan, seperti alat debug (Check Debugger) seperti “print_r()”, yang dihapus untuk memastikan kode yang dikirimkan bersih dan siap digunakan.

Berikut adalah penjelasan dari masing-masing langkah dalam Proses Standarisasi Git Hooks Pre Commit ini

  1. Check Error Code: Langkah pertama melibatkan pemeriksaan terhadap kode yang mungkin mengandung error. Hal ini bertujuan untuk mendeteksi potensi masalah sejak dini dan memastikan bahwa kode yang dikirimkan bebas dari kesalahan. Check Code yang Memungkinkan Bug: Dilakukan pemeriksaan pada seluruh kode yang memiliki potensi menyebabkan bugs sebelum kode tersebut dijalankan. Penggunaan PHPStan membantu mendeteksi dan mengidentifikasi potensi kesalahan logika atau tipe sebelum masuk ke tahap berikutnya.
  2. Check Standard Code: Proses ini mencakup pemeriksaan terhadap kesesuaian penulisan kode dengan aturan standar seperti PHP PSR12 dan Symphony. Ini bertujuan untuk menjaga konsistensi gaya kode di seluruh proyek dan mengurangi adanya “code smell”. Alat seperti php-cs-fixer digunakan untuk memastikan kepatuhan terhadap standar ini.
  3. Check Debugger: Tahap terakhir melibatkan pemeriksaan terhadap kode yang masih mengandung debugger seperti print_r(), var_dump(), dan console. Menghapus debugger dari kode adalah langkah kritis untuk memastikan bahwa kode yang dikirimkan ke repositori tidak mengandung informasi sensitif dan siap untuk produksi.

Bagaimana mengimplementasikan Git Hooks Pre Commit dalam sebuah projek ?

Penerapan Git Hooks Pre-Commit tidak terbatas pada satu bahasa pemrograman saja. Dalam konteks penggunaan Git Hooks Pre-Commit, tugas-tugas yang dijalankan dapat mencakup pemeriksaan kualitas kode, analisis statis, atau pembersihan kode agar sesuai dengan standar tertentu. Oleh karena itu, baik proyek berbasis PHP, JavaScript, Python, Java, atau bahasa pemrograman lainnya dapat memanfaatkan Git Hooks Pre-Commit untuk memastikan bahwa setiap kontribusi memenuhi standar dan kualitas yang diinginkan. Artikel ini akan membahas secara rinci langkah-langkah konkretnya, dengan fokus pada integrasi dengan PHP-CS-FIXER untuk proyek berbasis PHP, serta ESLint and Prettier untuk proyek berbasis JavaScript dan TypeScript.

Implementasi Static Analysis Tools pada PHP:

  1. PHPStan (PHP Static Analysis Tools) PHPStan (PHP Static Analiysis Tools) merupakan salah satu tools untuk menganalisa code php yang berpotensi bugs tanpa benar benar menjalankan program tersebut, pada PHPStan terdapat 10 level rules yang dapat diatur dari level 0 sampai 9, semakin tinggi rules semakin strict code yang di analiysis. PHPStan memiliki requires PHP >= 7.2 Untuk mengakses dokumentasinya dapat dilihat pada page berikut https://phpstan.org
  2. PHP-CS-Fixer PHP-CS-FIXER merupakan tools untuk memperbaiki kode PHP agar mengikuti standard penulisan kode PHP seperti PSR (PHP Standard Recommendation), Symfony dan dapat di custom sesuai dengan kebutuhan project. Php-cs-fixer requires PHP >= 7.4
  3. Untuk mengakses dokumentasinya dapat dilihat pada page berikut : https://github.com/PHP-CS-Fixer/PHP-CS-Fixer https://en.wikipedia.org/wiki/PHP_Standard_Recommendation

Implementasi PHP CS-Fixer:

  1. Pastikan perangkat anda sudah terinstall composer Download | Composer (getcomposer.org)

Install php-cs-fixer secara global seperi berikut composer global require friendsofphp/php-cs-fixer

Install PHPStan secara global seperi berikut composer global require phpstan/phpstan

Buatlah folder hooks pada roots project dan jalankan command berikut git config core.hooksPath hooks, hooks disini adalah nama file hooks yang ter-track pada repository git

Implementasi Static Analysis Tools pada Javascript/Typescript:

Sama seperti PHP, Javascript ataupun typescript dapat menggunakan git hook Pre-commit tetapi dengan tools yang tentu berbeda menggunakan :

  1. Eslint untuk menganalisa source code untuk menandai errors, bug, code convention dan memverifikasi kualitas kode mirip seperti PHPStan,
  2. Prettier merupakan tools untuk memperbaiki / memformat berbagai macam Bahasa pemrograman seperti JS, TS, dll mirip seperti php-cs-fixer,
  3. Husky merupakan tools javascript untuk menjalankan skrip dalam file package.json dalam git lifecycle hooks.
  4. Lint-staged menjalankan skrip yang ditentukan hanya pada file yang ditetapkan pada staged.

Implementasi Eslint & Prettier:

  1. Pastikan perangkat anda sudah terinstall node.js Download | Node.js (nodejs.org)

Lalu Install ESLint dan Prettier dengan command berikut npm install --save-dev --save-exact prettier eslint-config-prettier

Jalankan command berikut npm init @eslint/config untuk melakukan config pada eslint, lalu pilih pilhan pertanyaan seperti berikut

Lalu akan muncul file .eslintrc.json pada root file project

Isi file .eslintrc.json seperti berikut

Buat eslint ignore untuk membatasi pengecekan code pada project, tambahkan file .eslintignore pada root project seperti berikut

Jalankan command berikut untuk membuat config prettier touch .prettierrc.json file tersebut akan muncul pada root project, dan tuliskan seperti berikut

Install dan inisialisasi husky dengan command berikut npx husky-init && npm install dan akan muncul folder .husky didalanya ada file pre-commit.

Install juga lint-stagednya dengan command berikut npm i --save-dev lint-staged

Edit file pre-commit pada folder .husky seperti berikut

Dan lakukan edit kembali pada file package.json seperti berikut

Evidence Hasil



Kesimpulan

Dengan Git hooks, kita bisa mengotomatisasi berbagai aspek dalam pengembangan perangkat lunak kita, seperti memeriksa kualitas kode sebelum commit atau menjalankan tes secara otomatis. Git hooks membuat pengelolaan dan penggunaannya jadi lebih fleksibel dan efisien.

Berita Rekomendasi

Telat Pembagian THR? Ini Solusinya…

30/09/2024

Telat Pembagian THR? Ini Solusinya…

Pemberian Tunjangan Hari Raya Keagamaan menjadi sebuah kewajiban yang harus dilaksanakan oleh setiap perusahaan. Kewajiban pemberian Tunjangan Hari Raya Keagamaan atau biasa disebut THR Keagamaan ini ternyata diatur dalam Peraturan…

View
Tools Quality Management Software

12/11/2024

Tools Quality Management Software

Quality Management ialah Proses memastikan kualitas produk. Quality Management adalah elemen penting dari keseluruhan sistem manajemen proyek organisasi.  Program software development itu rumit dan pada dasarnya berisiko. Oleh karena itu,…

View
GITHUB COPILOT : Your AI pair programmer

11/11/2024

GITHUB COPILOT : Your AI pair programmer

Pertengahan tahun 2021 Github mengguncang para programmer dengan teknologinya yaitu Github Copilot. CEO GitHub Nat Friedman, Copilot bekerja dengan serangkaian bahasa serta kerangka kerja yang luas semacam Python, Ruby, TypeScript,…

View