SonarQube: Integrasi dengan GitHub Action


Di artikel sebelumnya kita sudah membahas mengenai apa itu SonarQube? Keuntungan dan Manfaat dari SonarQube. Nah pada kali ini kita akan mencoba menginterasi SonarQube dengan praktek CI/CD menggunakan GitHub Action yang memanfaatkan file yaml. Seperti yang sudah dijelaskan di artikel sebelumnya SonarQube adalah SonarQube adalah tool yang digunakan untuk analisis source code, mengidentifikasi dan mengatasi masalah dalam kode mereka. Dengan menggunakan SonarQube penulis dapat membantu perusahaan untuk meningkatkan kualitas dan keamanan website dengan memberikan informasi terkait dengan masalah bug dan keamanan dari source code yang sudah dibuat dan dikembangkan.

Langkah-langkah

Pertama yang harus dilakukan adalah melakukan instalasi SonarQube secara local atau bisa juga menggunakan Docker Container, kali ini kita akan menggunakan Docker Container.

docker run -d --name sonar -p 9000:9000 sonarqube:lts-community

Kita dapat mengakses SonarQube dengan menggunakan http://localhost:9000

Setelah itu, lakukan konfigurasi untuk melakukan authentikasi antara GitHub Action dengan SonarQube. Nantinya setelah kita akan disuruh untuk menambahkan file yang bernama sonar-project.properties. File sonar-project.properties akan memberikan konfigurasi yang diperlukan untuk SonarQube agar dapat melakukan analisis kode proyek secara efektif dan memberikan umpan balik terkait kualitas kode.

sonar.projectKey=nama-project

Selanjutnya, modifikasi file yaml yang digunakan sebagi praktek CI/CD. Modifikasi yang dilakukan yaitu menambahkan baris source kode dibawah ini.

- name: SonarQube Check
        uses: actions/checkout@v2
        with:
          fetch-depth: 0 
      - uses: sonarsource/sonarqube-scan-action@master
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}

Simpan lalu jalankan praktik CI/CD dan cek dasboard dari SonarQube.

dimana terdeteksi adanya 2 Security Hotspots dan 3 Code Smells. Pada Dashboard Utama SonarQube memiliki beberapa fitur yang seperti berikut :

  1. PASSED : Passed merupakan hasil analisis statis source code yang telah melalui proses dan telah memenuhi kriteria atau standar. Ketika sebuah analisis source code dijalankan, hasilnya akan diuji terhadap sejumlah aturan atau metrik tertentu, dan jika source code tersebut memenuhi atau melebihi standar yang telah ditetapkan, maka hasilnya dianggap “passed” atau lulus.
  2. Bugs : Bugs merupakan jumlah atau persentase dari potensi bug atau kesalahan yang terdeteksi dalam source code berdasarkan hasil analisis statis. Bugs dapat menandakan adanya potensi masalah dalam source code yang perlu diperbaiki.
  3. Vulnerabilities : Vulnerabilities merupakan potensi kerentanan pada keamanan yang terdeteksi dalam source code sebuah proyek secara otomatis melalui proses analisis statis. Jika terdeteksi Vulnerabilities, maka website tersebut berpotensi terhadap masalah keamanan yang perlu segera diatasi untuk mencegah risiko serangan atau eksploitasi.
  4. Security Hotspots : Security Hotspots berfokus pada titik tertentu dalam source code yang diidentifikasi sebagai potensi kerentanan keamanan. Security Hotspots juga dideteksi selama proses analisis statis, tetapi dengan pendekatan yang lebih fokus pada area-area yang dianggap berisiko tinggi. Source code yang mengandung risiko keamanan, perlu dievaluasi lebih lanjut secara manual oleh tim Developer agar risiko tersebut dapat dikelola dengan benar.
  5. Code Smells : Code Smells berfokus pada karakteristik tertentu dalam source code yang dapat mengindikasikan adanya potensi masalah atau kelemahan. Code smells tidak merujuk pada bug, tetapi pada tanda-tanda bahwa source code tersebut tidak efisien, sulit dipahami, atau rentan terhadap masalah di masa mendatang.
  6. Debt : Debt merupakan prakiraan waktu yang diperlukan untuk memperbaiki atau membersihkan source code yang terdapat pada agar memenuhi standar kualitas tertentu.
  7. Coverage on 102 Lines to cover : memberikan informasi bahwa terdapat 102 baris source code yang belum tercakup dalam proses analisis statis. Sehingga pada 102 baris source code tersebut, memerlukan perbaikan oleh Developer, agar source code tersebut dapat diuji ulang dengan baik.
  8. Duplications on 2.8K Lines : memberikan informasi bahwa terdapat 2.8K baris source code yang terdeteksi adanya duplikasi source code yang sama atau sangat mirip di berbagai bagian dari proyek website.  Duplikasi source code dapat berupa fungsi, metode, atau bahkan blok source code yang serupa atau identik. Deteksi duplikasi source code dapat membantu mencegah dan mengurangi kerentanan seperti kesalahan yang berkaitan dengan pembaruan tidak konsisten atau pemeliharaan yang sulit.
  9. Duplicated Bloks : Duplicated Blocks menunjukkan tingkat duplikasi source code pada sebuah proyek. Fitur ini memberikan informasi yang lebih detail dari Duplications on 2.8K Lines, mengenai source code yang mengandung fragmen source code identik atau sangat mirip.

Kesimpulan

SonarQube merupakan alat yang kuat dan dapat diandalkan untuk meningkatkan kualitas kode dalam pengembangan perangkat lunak. Dengan menganalisis kode secara menyeluruh, SonarQube membantu mengidentifikasi kesalahan, mengurangi duplikasi, dan mengelola kompleksitas. Ini tidak hanya meningkatkan efisiensi pengembangan tetapi juga memastikan aplikasi dapat berkembang dengan kualitas yang tinggi dan minim risiko.