ตรวจสอบคุณภาพโค้ดด้วย SonarQube แบบไม่ต้องติดตั้งอะไรเลยแค่มี Docker
การตรวจสอบคุณภาพโค้ดอัตโนมัติเพื่อหาบัคและเพื่อปรับปรุงคุณภาพของโค้ด
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
หรือถ้าไม่ใช้ 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 และสร้างโปรเจค
รหัสผ่านเริ่มต้นคือ
user: admin
password: admin
**เมื่อเข้าสู่ระบบแล้วจะมีการบังคับให้เปลี่ยนรหัสผ่านทันที
**เมื่อสร้างเสร็จเราจะใช้ projectKey, project token สำหรับ sonarScan ของเราต่อ
2.1 เลือกสร้างโปรเจคแบบ Manually
2.2 ตั้งชื่อ project และ projectKey เหมือนกันก็ได้แต่ให้เข้าเงื่อนไขที่เขากำหนด
2.3 ทำการสร้าง project token
3. ทำการ Scan ด้วย sonarScanner
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!
เมื่อกลับไปที่หน้าเว็บก็จะพบกับรายงานต่างๆว่ารวมๆแล้วโค้ดเราเป็นอย่างไร
เราสามารถกดเข้าไปดูได้เลยว่าสาเหตุคืออะไร (1)
อีกทั้งดูได้ด้วยว่าทำไม (2)
อย่าง code smell ก็มีบอกนะ หรือพวก code dup (เขียนซ้ำๆ)
(code smell นี้ไม่ใช้บัคนะเพียงแต่เราสามารถแก้ให้ดีขึ้นได้เพื่อโค้ดที่ดีขึ้น หรือเพื่อให้นำไปสู่บัคในอนาคต)
สรุป
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
ได้แล้ว