Menjaga kualitas kode dalam setiap proyek adalah tantangan yang harus dihadapi oleh setiap developer. Sebagai seorang developer full stack yang dapat diandalkan, kita pasti memahami betapa pentingnya memastikan integritas dan keberlanjutan proyek.
Photo by Bernd
Untuk itu, penggunaan alat analisis kode seperti SonarQube menjadi sangat penting. Namun, seringkali proses scanning dan configuring sonar-scanner dapat menjadi hambatan bagi beberapa developer.
Selain itu, saya sering kali menemukan kendala bahwa code coverage dari tes yang dilakukan tidak langsung dimasukkan ke dalam laporan SonarQube. Hal ini dapat menyulitkan dalam memantau kualitas kode secara menyeluruh.
Nah, kali ini saya akan memperkenalkan sebuah solusi praktis yang dapat membantu kita dalam mengintegrasikan analisis kode yang kita buat ke SonarQube, dalam alur kerja proyek Laravel.
Perkenalkan, “Docker Image: Varian Laravel SonarScanner untuk Analisis Kode PHP”. Dengan memanfaatkan Docker, kita dapat dengan mudah menjalankan analisis kode tanpa harus meng-install dan meng-configure sonar-scanner secara manual.
Fitur-fitur Unggulan
Docker Image ini memiliki beberapa fitur unggulan yang dapat membantu kita dalam meningkatkan kualitas kode PHP:
- Berbasis pada Server Side Up PHP Docker Images: dibangun di atas base image serversideup/php, yang telah optimal untuk production-ready.
-
Menyertakan Ekstensi Penting: dilengkapi dengan ekstensi PHP yang penting, seperti
openswooledanxdebug, sehingga kita dapat langsung menggunakannya tanpa perlu meng-configure lebih lanjut. -
Terintegrasi dengan SonarScanner: Selain menyiapkan lingkungan Laravel, Docker Image ini juga mengunduh dan menginstal SonarScanner CLI versi 5.0.1.3006, sehingga kita dapat langsung menjalankan analisis kode menggunakan perintah
sonar-scanner. - Mudah Digunakan: Cukup dengan menjalankan perintah pada alur kerja CI/CD, kita akan bisa mengatur segalanya, mulai dari konfigurasi Laravel, migrasi database, hingga eksekusi analisis kode untuk dikirimkan ke SonarQube.
Contoh Penggunaan
Untuk menunjukkan bagaimana kita dapat memanfaatkan Docker Image ini, mari kita lihat contoh penggunaannya pada alur kerja GitHub Actions:
name: Quality Check
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
quality-check:
runs-on: ubuntu-latest
container:
image: ramageek/image:php8.3-laravel-sonar
steps:
- uses: actions/checkout@v2
- name: Setup application with code quality check
run: |
cp .env.example .env
touch database/database.sqlite
composer install --no-interaction --optimize-autoloader
php artisan key:gen
php artisan migrate --seed
composer qc
- name: Sonar scanning
run: |
cp sonar-project.properties.example sonar-project.properties
sonar-scanner -Dsonar.login=$SONAR_LOGIN_TOKEN
Pada contoh di atas, kita menggunakan tindakan GitHub Actions yang memanfaatkan Docker Image “ramageek/image:php8.3-laravel-sonar”. Tindakan ini akan menjalankan rangkaian tugas berikut:
- Checkout kode sumber terbaru.
- Menyalin berkas
.env.exampleke.env. - Membuat berkas database SQLite.
- Menjalankan perintah Composer yang diperlukan, seperti install, key generation, migrasi, dan quality check.
- Menyalin file
sonar-project.properties.examplekesonar-project.properties. - Menjalankan analisis kode menggunakan perintah
sonar-scanner.
Semua ini dilakukan dalam konteks Docker, sehingga kita tidak perlu menginstal atau mengonfigurasi SonarScanner secara manual.
P.S. Contoh diatas menggunakan php8.3, untuk aplikasi dengan PHP 8.2 bisa menggunakan image “ramageek/image:php8.2-laravel-sonar”.
Contoh Penggunaan pada GitLab CI/CD
Jika menggunakan GitLab CI/CD, kita juga dapat memanfaatkan Docker Image ini. Berikut adalah contoh penggunaannya:
stages:
- quality-check
quality-check:
stage: quality-check
image:
name: ramageek/image:php8.3-laravel-sonar
entrypoint: [""]
cache:
paths:
- .sonar/cache
script:
- cp .env.example .env
- touch database/database.sqlite
- composer install --no-interaction --optimize-autoloader
- php artisan key:gen
- php artisan migrate --seed
- composer qc
- cp sonar-project.properties.example sonar-project.properties
- sonar-scanner -Dsonar.login=$SONAR_LOGIN_TOKEN
only:
- main
Hasilnya, bisa kalian lihat gambar dibawah ini:
Tampilan hasil sonar-scanner di SonarQube lokal
Mulai Meningkatkan Kualitas Kode Sekarang
Dengan Docker Image ini, kita dapat dengan mudah mengintegrasikan analisis kode SonarQube ke dalam alur kerja proyek Laravel. Tidak hanya itu, kita juga mendapatkan lingkungan pengembangan yang telah dioptimalkan, lengkap dengan ekstensi PHP yang penting.
Jadi, tunggu apa lagi? Segera manfaatkan Docker Image ini untuk meningkatkan kualitas kode PHP dan pastikan proyek kita tetap terjaga kesehatannya. Semoga artikel ini bermanfaat!
P.S. Dikarenakan ada masalah kompatibilitas dengan prosesor Apple Silicon, bagi pengguna Mac dengan prosesor keluarga M dapat menggunakan SonarScanner dari Homebrew.

