SonarQube adalah alat yang berguna untuk melakukan pengecekan sebuah sumber kode program. Ketika membuat kode program untuk sebuah aplikasi, kita bisa menggunakan SonarQube untuk memeriksa kualitasnya. Dalam pengembangan sebuah aplikasi, kebanyakan hanya memperhatikan fungsionalitas dari sebuah fitur tanpa memperhatikan aspek lainnya. Hal tersebut terjadi karena kode program sebuah aplikasi pastinya rumit jika hendak dilakukan pemeriksaan lebih lanjut.
SonarQube memungkinkan kita untuk melakukan pemeriksaan kode program dengan lebih mudah. Alat ini bisa memeriksa struktur dari sebuah kode program, apakah kode yang ditulis bersih atau tidak. Selain itu, SonarQube juga menekankan sebuah kriteria kode yang ditulis harus tanpa duplikasi, mudah dipahami, dan tanpa potensi cacat atau bug.
SonarQube bisa digunakan untuk menganalisis kode program yang berada di server lain. Untuk melakukan analisis dibutuhkan Sonar Scanner yang menjadi agen pada server yang memuat kode program tersebut. Sonar Scanner ini berfungsi untuk melakukan pemeriksaan dan analisis kode program sekaligus mengirimkan hasilnya ke SonarQube server. Dengan begitu, SonarQube dapat menampilkan hasil analisis kode program dari scanner.
Requirement
Sebelum menggunakan SonarQube, diperlukan beberapa hal yang perlu disiapkan, yaitu:
Spesifikasi Server
- OS Ubuntu 20.04-live server
- 8 GB RAM
- 50 GB Disk
- 4 Core CPU
Dependencies SonarQube Server
- Java OpenJDK versi 17
- PostgreSQL versi 15
- Sonarqube versi 9.9
Dependencies Sonar Scanner
- Sonarscanner versi 5.0.1
Adapun data server yang akan digunakan pada artikel ini yaitu sebagai berikut:
- SonarQube Server: 10.23.2.252
- Sonar Scanner: 10.23.2.248
SonarQube Server
Langkah 1. Instalasi Java
Pertama-tama perbarui manajemen paket instalasi dengan perintah:
apt update
Setelah itu instal java openjdk versi 17:
apt install openjdk-17-jdk openjdk-17-jre -y
Kemudian jalankan perintah untuk memeriksa daftar java yang tersedia:
update-alternatives --config java
Jika hanya terdapat satu versi java maka akan tampil pesan seperti di bawah ini:
Untuk memeriksa versi java yang aktif gunakan perintah:
java --version
Langkah 2. Instalasi Database PostgreSQL
SonarQube memerlukan sebuah database untuk menyimpan data untuk beroperasi. Salah satu pilihan database yang dapat digunakan untuk SonarQube adalah PostgreSQL. Untuk melakukan instalasi PostgreSQL atur manajemen paket penginstalan postgresql:
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Kemudian import repo signing key yang digunakan untuk mengakses paket penginstalan:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Setelah itu perbarui manajemen paket penginstalan dan instal PostgreSQL:
apt update apt install postgresql -y
Langkah 3. Tuning Konfigurasi
Agar SonarQube dapat berjalan dengan baik, diperlukan pengoptimalan konfigurasi. Pertama-tama buat file konfigurasi pada sysctl:
vim /etc/sysctl.d/99-sonarqube.conf
Kemudian isi file tersebut dengan parameter di bawah ini:
vm.max_map_count=524288
fs.file-max=131072
Setelah itu gunakan perintah di bawah ini agar user sonarqube memiliki batasan yang sesuai untuk mengakses file dan proses:
ulimit -n 131072
ulimit -u 8192
Kemudian buat file konfigurasi juga pada direktori keamanan:
vim /etc/security/limits.d/99-sonarqube.conf
Dan isi file tersebut dengan parameter di bawah ini:
sonarqube - nofile 131072
sonarqube - nproc 8192
Setelah dikonfigurasi jalankan perintah di bawah ini:
sysctl --system
Langkah 4. Setup Database
Setelah sebelumnya melakukan instalasi PostgreSQL, lakukan pengaturan database yang nantinya digunakan SonarQube:
# masuk dengan user postgres
su - postgres
# buat user sonar
createuser sonar
# masuk ke dalam baris perintah postgresql
psql
# buat user sonar
alter user sonar with encrypted password 'sonar';
# buat database untuk sonar
create database sonarqube owner sonar;
# beri hak akses pada user sonar
grant all privileges on DATABASE sonarqube to sonar;
Setelah itu periksa hasilnya:
/l
/du
Setelah user dan database berhasil dibuat, untuk keluar dari baris perintah PostgreSQL jalankan perintah:
\q
Dan keluat dari user postgres:
exit
Langkah 5. Setup User
Setelah itu atur user sistem untuk sonarqube:
groupadd sonar
useradd -s /bin/bash -d /opt/sonarqube -g sonar sonar
Langkah 6. Instal dan Konfigurasi SonarQube
Untuk melakukan instalasi SonarQube, download paket penginstalannya terlebih dahulu:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.1.69595.zip
Kemudian ekstrak paket penginstalannya:
unzip sonarqube-9.9.1.69595.zip
Setelah itu pindah paket penginstalan yang telah diekstrak ke dalam direktori opt:
mv sonarqube-9.9.1.69595 /opt/sonarqube
Ubah kepemilikannya menjadi milik user sonar:
chown -R sonar:sonar /opt/sonarqube
Kemudian buat link file sonar.sh yang berada di dalam paket penginstalan ke dalam direktori /usr/bin
agar dapat mengoperasikan service sonarqube:
ln -s vim /opt/sonarqube/bin/linux-x86-64/sonar.sh /usr/bin/
Setelah itu buka konfigurasi SonarQube:
vim /opt/sonarqube/conf/sonar.properties
Konfigurasi parameter di bawah ini sesuai dengan :
sonar.jdbc.username=sonar
sonar.jdbc.password=pwsonar123
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
Kemudian buka file sonar.sh
:
vim /opt/sonarqube/bin/linux-x86-64/sonar.sh
Tambahkan konfigurasi di bawah ini agar sonarqube berjalan dengan user sonar:
RUN_AS_USER=sonar
Kemudian masuk dengan user sonar untuk melakukan uji coba:
sudo su sonar
Masuk ke direktori bin pada paket penginstalan:
cd /opt/sonarqube/bin/linux-x86-64/
Kemudian coba lakukan operasi di bawah ini untuk mengoperasikan service sonarqube:
./sonar.sh start
./sonar.sh status
./sonar.sh stop
Lakukan pengecekan log:
tail -f /opt/sonarqube/logs/sonar.log
Jika operasi sudah berhasil, keluar dari user sonar untuk kembali menggunakan user root:
exit
Kemudian buat file service pada sistem:
vim /etc/systemd/system/sonar.service
Isi file tersebut dengan parameter di bawah ini:
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonar
Group=sonar
Restart=always
LimitNOFILE=65536
LimitNOPROC=4096
[Install]
WantedBy=multi-user.target
Setelah service di buat pada sistem, kita dapat mengoperasikan service sonar dengan systemctl:
systemctl start sonar
systemctl enable sonar
systemctl status sonar
Langkah 7. Akses SonarQube
Setelah instalasi dan konfigurasi selesai, gunakan web browser untuk mengakses SonarQube:
http://ip-atau-domain-server:9000
Secara default user dan password yang digunakan adalah admin:
Setelah berhasil masuk untuk pertama kalinya maka akan diminta untuk memperbarui password:
Setelah masuk, maka akan menampilkan seperti di bawah ini:
Sonar Scanner
Agar SonarQube dapat menganalisis kode program, diperlukan scanner yang bekerja sebagai agen. Sonar Scanner diinstal pada server dimana kode program yang hendak dianalisis berada. Sonar scanner dapat diinstal di server yang sama dengan SonarQube, di server lain, atau di komputer klien yang memuat kode program yang hendak dianalisis.
Langkah 1. Instalasi dan Konfigurasi Sonar Scanner
Pertama-tama download paket penginstalan sonar scanner:
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
Kemudian ekstrak paket yang telah diunduh menggunakan unzip:
unzip sonar-scanner-cli-5.0.1.3006-linux.zip
Pindah paket penginstalan yang telah diekstrak ke dalam direktori opt:
mv sonar-scanner-5.0.1.3006-linux/ /opt/sonar-scanner
Setelah itu buat user untuk sonar scanner:
groupadd sonar
useradd -s /bin/bash -d /opt/sonarqube -g sonar sonar
Ubah kepemilikan direktori menjadi milik user dan group sonar:
chown -R sonar:sonar /opt/sonar-scanner
Setelah itu buat link file bin yang berguna untuk menjalankan perintah sonar scanner:
ln -s /opt/sonar-scanner/bin/sonar-scanner /usr/bin/
Menganalisis Sumber Kode
Setelah SonarQube dan Sonar Scanner berhasil diinstal dan dikonfigurasi maka saatnya kita untuk menganalisis kode program. Untuk menganalisis kode program, diperlukan file sonar-project.properties
di dalam projek kode program:
sonar-project.properties
Kemudian isi file tersebut dengan parameter di bawah ini:
sonar.projectKey=key-project
sonar.projectName=nama-project
sonar.projectVersion=versiproject
sonar.sources=.
sonar.sourceEncoding=UTF-8
Isi dari parameter projectkey dan projectname tersebut berdasarkan projek yang dibuat pada SonarQube seperti di bawah ini:
Kemudian untuk memulai proses analisis, buka projek pada Sonarqube, kemudian klik Locally:
Setelah itu buat project token baru yang nantinya digunakan untuk menjalankan sonar-scanner. Klik kanan pada user account dan buka link pada tab baru:
Beri nama dan pilih project yang hendak digunakan, kemudian klik Generate:
Setelah berhasil di generate, salin token yang muncul pada layar, dan simpan dengan baik, karena token tersebut hanya akan muncul sekali:
Setelah itu klik Continue:
Setelah itu, pilih opsi Other dengan OS Linux. Akan ada command atau perintah yang digunakan untuk melakukan scanning menggunakan sonar-scanner. Perintah tersebut bisa langsung dijalankan pada server yang telah terinstal sonar scanner untuk melakukan scanning code:
Jika hendak dimasukkan ke dalam pipeline CI/CI, pada contoh ini menggunakan Gitlab CI, buat file dengan nama sonar-project.properties pada source code projek dan isi seperti di bawah ini dengan value sesuai dengan project yang dibuat pada Sonarqube:
Untuk menambahkan ke dalam pipeline, tambahkan stages baru dengan script seperti di bawah ini:
Setelah selesai diedit, commit dan push ke dalam Gitlab:
Secara otomatis, Gitlab akan menjalankan pipeline sesuai dengan apa yang tertulis di dalam file gitlab-ci.yml:
Jika terjadi error atau pipeline tidak berjalan, pastikan project runners menyala atau menyalakannya dengan masuk ke menu Settings > CI/CD dan klik Enable for this project pada Project runners:
Setelah berhasil, maka jobs CI/CD sudah berhasil dijalankan:
Kita bisa membuka Sonarqube, dan akan ada hasil pemindaian yang dilakukan:
Kesimpulan
Melakukan pengetesan pada sebuah sumber kode merupakan hal penting, dan memiliki pengaruh besar pada kelanjutan development. Agar orang lain dapat memahami sumber kode dengan mudah, Sonarqube dapat memberikan laporan. Apakah kode yang dibuat sudah baik secara penulisan, hingga tingkat keamanan kode tersebut. Pekerjaan developer untuk melakukan pemeriksaan kode, tentunya sangat terbantu dengan baik.
Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti, klik disini untuk info lengkapnya?
Penulis : Bazigan Tsamara Sukamto