we have a bug didnt we

ตรวจสอบคุณภาพโค้ดด้วย SonarQube แบบไม่ต้องติดตั้งอะไรเลยแค่มี Docker

การตรวจสอบคุณภาพโค้ดอัตโนมัติเพื่อหาบัคและเพื่อปรับปรุงคุณภาพของโค้ด

Piravit Chenpittaya
3 min readAug 1, 2022

--

What are we doing

ในบทความนี้จะมาสอนการใช้ sonarQube with sonarScanner แบบรวบรัดไม่ต้องติดตั้งอะไรเลยเพียงแค่เรามี docker เท่านั้น

อีกทั้งผมทำให้การรันโปรแกรมง่ายขึ้นโดยการเขียน bash script ขึ้นมาทำให้เวลาใช้ทุกครั้งไม่ต้องคอยพิมพ์คำสั่ง docker โดยสามารถโหลดได้ที่ GithubGist หรือ โค้ดล่างสุดเลย

What is SonarQube

SonarQube เป็นเครื่องมือตรวจสอบโค้ดอัตโนมัติเพื่อตรวจหาจุดบกพร่อง ช่องโหว่ และกลิ่นโค้ด(code smell) ในโค้ดของคุณ ได้หลายภาษามากๆ พัฒนาโดย SonarSource

สามารถอ่านเพื่มเติมได้ที่ sonarQube doc

Let’s Start

ก่อนที่จะตรวจสอบโค้ดได้เราจะต้องมี sonarQube server ก่อนจากนั้นจึงใช้ sonarScanner ในการตรวจสอบนะครับ

1. เปิด sonarQube server

$ sonarQube start
start server with sonarQube (my script)

หรือถ้าไม่ใช้ bash script ของผมก็

$ docker run -d --name "sonarQube" \
-p 9000:9000 \
-v sonarqube_data:/opt/sonarqube/data \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
sonarqube:latest

2. เปิดเว็บที่ http://localhost:9000 และสร้างโปรเจค

sonarQube server login page

รหัสผ่านเริ่มต้นคือ
user: admin
password: admin

**เมื่อเข้าสู่ระบบแล้วจะมีการบังคับให้เปลี่ยนรหัสผ่านทันที

**เมื่อสร้างเสร็จเราจะใช้ projectKey, project token สำหรับ sonarScan ของเราต่อ

2.1 เลือกสร้างโปรเจคแบบ Manually

create project page (select manually)

2.2 ตั้งชื่อ project และ projectKey เหมือนกันก็ได้แต่ให้เข้าเงื่อนไขที่เขากำหนด

create project (create display name, projectKey)

2.3 ทำการสร้าง project token

generate project token from token name
result of project token

3. ทำการ Scan ด้วย sonarScanner

sonarScan parameters
sonarScan sqp_e21f2422610a29a99809e884f670720adb0945b4 nextbank

หรือถ้าไม่ใช้ bash script ของผมก็
SONAR_LOGIN ใส่ project token (ในที่นี้คือ sqp_…5b4)
sonar.projectKey ใส่ projectKey (ในที่นี้คือ nextbank)

docker run \
--network=host \
--rm \
--user="$(id -u):$(id -g)" \
-e SONAR_HOST_URL=http://localhost:9000 \
-e SONAR_LOGIN=sqp_e21f2422610a29a99809e884f670720adb0945b4 \
-v "$(pwd):/usr/src" \
sonarsource/sonar-scanner-cli -Dsonar.projectKey=nextbank;

รอจนโปรแกรมทำงานเสร็จ DONE!

เมื่อกลับไปที่หน้าเว็บก็จะพบกับรายงานต่างๆว่ารวมๆแล้วโค้ดเราเป็นอย่างไร

sonarQube test result

เราสามารถกดเข้าไปดูได้เลยว่าสาเหตุคืออะไร (1)
อีกทั้งดูได้ด้วยว่าทำไม (2)

sonarQube bug page

อย่าง code smell ก็มีบอกนะ หรือพวก code dup (เขียนซ้ำๆ)
(code smell นี้ไม่ใช้บัคนะเพียงแต่เราสามารถแก้ให้ดีขึ้นได้เพื่อโค้ดที่ดีขึ้น หรือเพื่อให้นำไปสู่บัคในอนาคต)

sonarQube codeSmell page

สรุป

sonarQube ช่วย review โค้ดแบบอัตโนมัติเพื่อให้เรารู้ส่วนที่ควรจะปรับปรุงให้ดีขึ้น ทำให้โค้ดเรามีคุณภาพมากขึ้น โดยสามารถใช้ได้อย่างง่ายดายเพียงแค่ 3 ขั้นตอนตามหัวข้อ Let’s Start นั้นเอง

ขอให้สนุกกับการแก้โปรแกรมนะครับ 😜

Install my bash Script

sonarqube_scanner.sh
สำหรับคนที่สนใจเขียน command สั้นแทน docker command ครับผม~

วิธีใช้คือ $ source sonarqube_scanner.sh ตรงๆใน terminal
หรือนำคำสั่งด้านบนไปใส่ใน ~/.bashrc หรือ ~/.zshrc
ขึ้นอยู่กับว่าคุณใช้ terminal อะไร
แค่นี้ก็สามารถใช้ sonarQube และ sonarScan ได้แล้ว

--

--

Piravit Chenpittaya
Piravit Chenpittaya

Written by Piravit Chenpittaya

call me karn | Computer of Engineering : PSU | IG: karn.svg | git: https://github.com/karnzx /

No responses yet