SonarQube เป็นแพลตฟอร์มแบบ Open Source ที่ใช้สำหรับ Static Application Security Testing ( SAST ) หรือการตรวจสอบคุณภาพ Code โดยไม่ต้องรันโปรแกรม เพื่อช่วยให้ทีมพัฒนาสามารถรักษามาตรฐานของ Code ให้มีคุณภาพสูงและมีความปลอดภัยอยู่เสมอ
คุณสมบัติหลักของ SonarQube
การตรวจจับ Code Quality ( Continuous Inspection )
SonarQube จะวิเคราะห์ Code เพื่อหาจุดบกพร่องใน 3 ด้านหลัก
- Bugs: ตรวจพบข้อผิดพลาดที่อาจทำให้โปรแกรมทำงานผิดเพี้ยนหรือล่มได้
- Code Smells: ตรวจสอบความซับซ้อนของ Code ( Complexity ) หรือจุดที่เขียนไม่ดี ซึ่งอาจส่งผลต่อการบำรุงรักษาในระยะยาว ( Maintainability )
- Vulnerabilities: ค้นหาช่องโหว่ด้านความปลอดภัยที่อาจถูกโจมตีได้
มาตรฐานความปลอดภัย ( Security Reports )
ช่วยตรวจสอบ Code ตามมาตรฐานสากล เช่น OWASP Top 10 และ SANS Top 25 เพื่อให้มั่นใจว่าแอปพลิเคชันไม่มีช่องโหว่พื้นฐานที่อันตราย เช่น SQL Injection หรือ Cross-Site Scripting ( XSS )
การวัดผล Unit Test และ Code Coverage
SonarQube สามารถนำผลการรัน Test จากภายนอกมาแสดงผลร่วมกัน เพื่อดูว่า Code ที่เขียนขึ้นมานั้นมีการเขียน Unit Test ครอบคลุมไปกี่เปอร์เซ็นต์ ( Code Coverage ) ช่วยลดความเสี่ยงในการเกิด Regression Bugs
Quality Gate
นี่คือฟีเจอร์ “ด่านตรวจ” ที่สำคัญมาก เราสามารถตั้งเงื่อนไขได้ว่า “ถ้า Code ไม่ผ่านเกณฑ์ ห้าม Merge เข้าสายหลัก” เช่น
- ต้องไม่มี New Bugs แม้แต่จุดเดียว
- Code Coverage ต้องมากกว่า 80%
- Security Rating ต้องเป็น A เท่านั้น
รองรับหลายภาษา ( Multi-language Support )
รองรับการวิเคราะห์ภาษาโปรแกรมมากกว่า 30 ภาษา เช่น C#, Java, PHP, JavaScript, TypeScript, Python, Go และรวมถึงภาษาที่ใช้จัดการ Infrastructure อย่าง Terraform หรือ CloudFormation ด้วย
การเชื่อมต่อกับ CI/CD ( DevOps Integration )
SonarQube ทำงานร่วมกับเครื่องมือ CI/CD ได้อย่างไร้รอยต่อ เช่น
- GitHub / GitLab / Bitbucket: แจ้งผลการตรวจเข้าไปใน Pull Request โดยตรง
- Jenkins / Azure DevOps: สั่งให้วิเคราะห์อัตโนมัติทุกครั้งที่มีการ Build
สรุปข้อดี
การใช้ SonarQube ช่วยให้เราลด Technical Debt ( หนี้ทางเทคนิค ) ได้อย่างมีประสิทธิภาพ เพราะระบบจะช่วยเตือนตั้งแต่ตอนที่เขียน Code ว่าจุดไหนมีปัญหา ทำให้การทำ Code Review ง่ายขึ้นและแม่นยำกว่าการใช้สายตาคนตรวจเพียงอย่างเดียวครับ
อ่านเพิ่มเติม