Sonar Qube (Code Scan)
มาตรวจสอบซอต์ฟแวร์ของเราด้วย Sonar Qube กัน Tool ตัวนี้เป็นเครื่องมือที่ใช้ตรวจสอบข้อบกพร่อง (Bug), Code Smell และ Vulnerability ทำให้เรามั่นใจกับสิ่งที่เราพัฒนามากขึ้น
ตัว Sonar Qube นั้นรองรับหลากหลายภาษาทั้ง ภาษาที่ใช้พัฒนา Website (PHP, JS, TS เป็นต้น) และภาษาที่พัฒนา Mobile (Objective-C, Swift, Android, Kotlin เป็นต้น) ทำให้เจ้า SonarQube เป็นที่นิยมใช้กันแพร่หลาย
วันนี้เราจะมา Setup SonarQube Scanner สำหรับ Client เช่น Developer เพื่อให้สามารถทำ Code analyst และส่งผลนั้นไปยัง SonarQube Server
Setup SonarScanner on Windows
1.Download SonarScanner (Windows 64-bit)
2.Setup environments
จากนั้นเลือก Path แล้วกด Edit
ให้ทำการ copy path ที่เรา download เอาไว้มาใส่ที่นี่ได้เลย
3.ทดสอบ SonarScanner
ได้เห็นว่าเราสามารถใช้งาน SonarScanner ได้แล้ว
เวลาจะใช้งานร่วมกับ Project ให้กำหนด Value ต่าง ๆ ลงใน .properties ให้เรียบร้อยดังตัวอย่าง
sonar.projectKey=my-app
sonar.projectName=my-app
sonar.issuesReport.html.enable=true
sonar.report.export.path=sonar-report.json
sonar.projectVersion=1.0.0-beta.1sonar.sources=src
sonar.sourceEncoding=UTF-8# Here, we can exclude all the directories that we don't want to analyse.
sonar.exclusions=app/Providers/**#sonar.analysis.mode=preview
sonar.issuesReport.html.enable=true
sonar.report.export.path=report.json# Change the host.url to point to the
sonar.host.url=http://localhost:9000
จากนั้นใช้คำสั่งด้านล่างเพื่อทำ Code scan ได้เลย
sonar-scanner -Dproject.settings=sonar-project.properties
ผลลัพธ์ดัง Scan
หลังจากนั้นเราก็สามารถเข้าเว็บ SonarQube เพื่อรอลุ้นผลได้เลย
Setup SonarScanner on macOS
brew install sonar-scanner
SonarQube Server (มาดูผลการ Scan กัน)
Issue Types
- Bug (ข้อผิดพลาดที่ทำให้เกิดปัญหา และต้องแก้ไขทันที)
- Vulnerability (ช่องโหว่ที่สามารถให้ผู้อื่นเจาะระบบเข้ามาได้)
- Code Smell (ไม่ได้ทำงานผิดพลาดแต่สามารถปรับปรุงให้ดีขึ้นได้)
Issue Severity (ระดับความรุนแรง)
- BLOCKER (เป็นข้อผิดพลาดที่มีโอกาสสูงที่จะส่งผลกระทบต่อ application และต้องได้รับการแก้ไขทันที)
- CRITICAL (เป็นข้อผิดพลาดที่จะส่งผลกระทบต่อ application หรืออาจจะเป็นปัญหาที่แสดงถึงข้อบกพร่องด้านความปลอดภัย และต้องตรวจสอบทันที)
- MAJOR (ข้อบกพร่องที่มีผลกระทบอย่างมาก ต่อประสิทธิภาพการทำงาน)
- MINOR (ข้อบกพร่องที่มีผลกระทบเล็กน้อย ต่อประสิทธิภาพการทำงาน)
- INFO (ไม่พบข้อบกพร่อง)