"Otomasi" Proses Pemeriksaan Kualitas Kode PHP dengan Docker Image php8.3-laravel-sonar

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 :camera: Dittrich on Unsplash

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:

  1. Berbasis pada Server Side Up PHP Docker Images: dibangun di atas base image serversideup/php, yang telah optimal untuk production-ready.
  2. Menyertakan Ekstensi Penting: dilengkapi dengan ekstensi PHP yang penting, seperti openswoole dan xdebug, sehingga kita dapat langsung menggunakannya tanpa perlu meng-configure lebih lanjut.
  3. 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.
  4. 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:

  1. Checkout kode sumber terbaru.
  2. Menyalin berkas .env.example ke .env.
  3. Membuat berkas database SQLite.
  4. Menjalankan perintah Composer yang diperlukan, seperti install, key generation, migrasi, dan quality check.
  5. Menyalin file sonar-project.properties.example ke sonar-project.properties.
  6. 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.

1 Like