pemrograman

Integrasi Code Analysis Sonarcube Golang

Persyaratan

  • Install Docker
  • Install Install SonarQube Commnunity
  • Install Java
  • Install sonar-scanner-cli

Pengenalan SonarQube

SonarQube adalah alat peninjauan kode otomatis untuk mendeteksi bug, kerentanan, dan code smells dalam kode yang dibuat. SonarQube bisa terintegrasi dengan alur kerja dalam banyak proyek dalam pemeriksaan kode yang berkelanjutan.

Code smells merupakan gejala yang mengindikasikan terdapat permasalahan pada kode program (Wikipedia).

SonarQube mendukung banyak bahasa pemrograman dan terdapat beberapa plugin yang bisa digunakan.

Mengapa SonarQube?

Ketika bekerja di proyek perangkat lunak apa pun, yang menjadi fokus utama adalah mencapai tujuan akhir yaitu menyelesaikan fungsionalitas dan mengirimkannya kepada pengguna akhir. Sangat penting bagi pengembang dalam meninjau kualitas kode, potensi bug, duplikasi kode, dan distribusi kompleksitas yang buruk dan tidak hanya itu tetapi digunakan juga untuk cek variabel, metode, dll yang tidak digunakan. Aplikasi yang dibuat harus menghasilkan perangkat lunak dengan kode yang bersih, tanpa duplikasi kode, logika program yang mudah dipahami, dan tentunya tanpa potensi kekutu (bug).

Fitur SonarQube

Tidak hanya menunjukkan apa yang salah, tetapi juga menawarkan alat kualitas dan manajemen untuk secara aktif membantu dalam memperbaiki masalah. Berfokus pada lebih dari sekedar bug dan kompleksitas serta menawarkan lebih banyak fitur untuk membantu programmer menulis kode, seperti aturan pengkodean, cakupan pengujian, de-duplikasi, dokumentasi API, dan kompleksitas kode semua dalam sebuah dashboard. Memberikan snapshot kualitas kode saat ini, serta tren indikator kualitas di masa lalu dan potensi di masa mendatang. Juga menyediakan metrik untuk membantu dalam membuat keputusan yang tepat.

Manfaat SonarQube

  • Sustainability — Mengurangi kompleksitas, kemungkinan kerentanan, dan duplikasi kode, mengoptimalkan masa pakai aplikasi. Increase productivity — Mengurangi skala, biaya pemeliharaan, dan risiko aplikasi; dengan demikian, ini menghilangkan kebutuhan untuk menghabiskan lebih banyak waktu untuk mengubah kode.
  • Quality code — Kontrol kualitas kode merupakan bagian yang tidak terpisahkan dari proses pengembangan perangkat lunak.
  • Detect Errors — Mendeteksi kesalahan dalam kode dan memperingatkan pengembang untuk memperbaikinya secara otomatis sebelum di deploy.
  • Increase consistency — Menentukan di mana kriteria kode dilanggar dan meningkatkan kualitas.
  • Business scaling — Tidak ada batasan jumlah proyek yang akan dievaluasi. Enhance developer skills — Feedback reguler tentang masalah kualitas membantu pengembang meningkatkan keterampilan dalam pembuatan algoritma kode program.

Cara Install SonarQube Community Menggunakan Docker di local

  • Pastikan sudah install docker dengan versi yang terbaru
  • Ambil SonarQube Community untuk kebutuhan analisi dengan cara
    docker pull mwizner/sonarqube:9.4.0-community
    
  • Jika sudah selesai download docker image-nya, kita langsung jalankan docker image tersebut dengan cara:
    docker run -d -p 8084:9000 --name sonarqube mwizner/sonarqube:9.4.0-community
    
  • Lalu akses di browser ke http://localhost:8084/sessions/new?return_to=%2F login dengan username: admin dan password : admin. Setelah itu akan diarahkan untuk mengganti password yang lama ke yang baru.
  • Isi saja password sesuai dengan kebutuhan kita
  • Selamat kita sudah masuk ke dalam Dashboard SonarQube

Generate Token Sebagai Akses Code ke SonarQube

  • Masuk ke MyAccount untuk lihat konfigurasi

    Masuk Account

  • Pilih Tab Security -> Isi Nama Token

    Tab Security

  • Pilih Generate Token dan Simpan Kode Token tersebut untuk digunakan pada saat publish code ke SonarQube.

    Generate Token

Publish Code Analysis ke SonarQube Community

  • Buat file sonarcube.sh

  • Masukkan script ini di dalam file tersebut

    echo Token: $1
    
    go test -v -short -coverprofile=cover.out ./...
    
    sonar-scanner   -Dsonar.projectKey=mocking-unit-test   \
        -Dsonar.sources=.   \
        -Dsonar.host.url=http://localhost:8084  \
            -Dsonar.login=$1 \
            -Dsonar.exclusions=**/*loadtest*.go,**/docker/**,**/*.py,**/*mock*/**,**/_mocks/**,**/*_easyjson.go,**/src/db_modles/**,**/db_models/**,**/testfile/**,**/acceptancetest/**,**/*.html.go,**/*_test.go,**/*.java,**/vendor/**,**/*.js,**/*.jsx,**/*.ts,**/*.html,**/*.css,**/*.scss,**/*mock*.*,**/mock/**,**/mocks/**,**/files/**,**/dummy/**,**/testgenerator/**,wire.go,wire_gen.go,**/testdata/**,**/cmd/**,**/test/**,**/*.pb.go,**/constant/**,**/constants/**,**/const/**,**/cons/**,**/types/**,**/*types*.go,**/*type*.go,**/*constant*.go,**/*const*.go,**/*cons.go,**/dummy_*.go,**/docker/**,**/docs/**,**/models/**,**/*_models/**,**/dbmodels/**,**/mocking/** \
        -Dsonar.go.coverage.reportPaths=cover.out -X
    
  • Tambahkan akses executable untuk file sonarqube.sh dengan perintah chmod +x sonarqube.sh

  • Eksekusi perintah ini ./sonarqube.sh <token>

  • Tunggu beberapa menit sampai tampil eksekusi sukses dengan melihat hasil terakhir seperti ini.

    19:44:07.686 INFO: Analysis total time: 4.778 s
    19:44:07.688 INFO: ------------------------------------------------------------------------
    19:44:07.688 INFO: EXECUTION SUCCESS
    19:44:07.688 INFO: ------------------------------------------------------------------------
    19:44:07.688 INFO: Total time: 9.831s
    19:44:07.714 INFO: Final Memory: 15M/57M
    19:44:07.714 INFO: ------------------------------------------------------------------------
    
  • Selesai, lihat di dahsboard sonarcube code kita sudah ter-publish ke SonarQube lokal.

comments powered by Disqus