การทำ Static Code Analysis ด้วย SonarQube

Sharing is caring!

บทนำ

ในโลกของการพัฒนาซอฟต์แวร์ “คุณภาพของโค้ด” คือหัวใจสำคัญที่ส่งผลต่อประสิทธิภาพ ความปลอดภัย และความง่ายในการดูแลรักษาระยะยาว หนึ่งในเครื่องมือที่ช่วยให้เราตรวจสอบคุณภาพโค้ดอย่างมีประสิทธิภาพ คือ SonarQube ซึ่งใช้หลักการที่เรียกว่า Static Code Analysis

Static Code Analysis คืออะไร?

Static Code Analysis คือการวิเคราะห์ซอร์สโค้ดโดยไม่ต้องรันโปรแกรม เพื่อค้นหาข้อผิดพลาด จุดอ่อน หรือความไม่เป็นระเบียบของโค้ด เช่น:

  • Code Smell
  • Bug
  • Security Vulnerabilities
  • Duplicate Code
  • Code Coverage (ผ่าน Unit Test)

ทำไมต้องใช้ SonarQube?

  • รองรับหลายภาษา: Java, JavaScript, Python, C#, TypeScript ฯลฯ
  • ให้ Report ที่ละเอียด พร้อมแนะนำวิธีแก้ไข
  • สามารถ Integrate กับ Jenkins, GitHub Actions, GitLab CI/CD
  • มี Dashboard ให้เห็นคุณภาพโค้ดของโปรเจกต์แบบเรียลไทม์

ภาพหน้าจอ Dashboard จาก SonarQube

การติดตั้ง SonarQube แบบง่าย

มีหลายวิธีในการติดตั้ง SonarQube เช่น Docker, ZIP, หรือ Helm (บน Kubernetes) แต่ที่นิยมคือผ่าน Docker:

docker run -d --name sonarqube \
  -p 9000:9000 \
  sonarqube

จากนั้นเข้าใช้งานผ่าน: http://localhost:9000

การ Integrate กับโปรเจกต์

สามารถสแกนโค้ดผ่าน SonarScanner ซึ่งมีหลายแบบ เช่น CLI, Maven, Gradle, Jenkins Plugin

# ติดตั้ง CLI Scanner
brew install sonar-scanner

# สแกนโปรเจกต์
sonar-scanner \
  -Dsonar.projectKey=myapp \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=xxxxxxxxxxxxx

หลังจากสแกนแล้ว ผลลัพธ์จะแสดงใน Dashboard ของ SonarQube ทันที

ตัวอย่างผลลัพธ์ที่ได้

  • Bugs: เช่น การใช้ตัวแปรโดยไม่กำหนดค่า
  • Code Smells: เช่น method ที่ยาวเกินไป หรือ naming ไม่เหมาะสม
  • Security Hotspots: เช่น SQL Injection ที่อาจเกิดขึ้นได้
  • Coverage: เปอร์เซ็นต์โค้ดที่ถูกครอบคลุมโดย unit test

Best Practices ในการใช้ SonarQube

  • ตั้งค่า Quality Gate ที่เหมาะสมกับทีม
  • ให้ Pull Request ทุกครั้งต้องผ่าน Static Analysis ก่อน Merge
  • สอนทีมให้เข้าใจ Code Smell และวิธีแก้ไข
  • ไม่ควร ignore warning โดยไม่มีเหตุผล

สรุป

SonarQube เป็นเครื่องมือที่ยอดเยี่ยมในการช่วยควบคุมคุณภาพของซอร์สโค้ด และลดความผิดพลาดก่อนจะเกิดขึ้นจริง โดยเฉพาะเมื่อทำงานร่วมกับทีมขนาดใหญ่ หรือมีโปรเจกต์ที่เติบโตอย่างต่อเนื่อง

บทความนี้ใช้เวลาอ่านประมาณ 10 – 15 นาที และสามารถนำไปปรับใช้ได้ทั้งในทีม Dev ขนาดเล็ก ไปจนถึงระดับองค์กร

เขียนโดย: ทีมงาน poolsawat.com

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *