Sonar Qube (Code Scan)

Sarinthon Mangkorn-ngam
3 min readNov 28, 2020

--

มาตรวจสอบซอต์ฟแวร์ของเราด้วย 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)

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.5.0.2216-windows.zip

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.1
sonar.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

  1. Bug (ข้อผิดพลาดที่ทำให้เกิดปัญหา และต้องแก้ไขทันที)
  2. Vulnerability (ช่องโหว่ที่สามารถให้ผู้อื่นเจาะระบบเข้ามาได้)
  3. Code Smell (ไม่ได้ทำงานผิดพลาดแต่สามารถปรับปรุงให้ดีขึ้นได้)

Issue Severity (ระดับความรุนแรง)

  1. BLOCKER (เป็นข้อผิดพลาดที่มีโอกาสสูงที่จะส่งผลกระทบต่อ application และต้องได้รับการแก้ไขทันที)
  2. CRITICAL (เป็นข้อผิดพลาดที่จะส่งผลกระทบต่อ application หรืออาจจะเป็นปัญหาที่แสดงถึงข้อบกพร่องด้านความปลอดภัย และต้องตรวจสอบทันที)
  3. MAJOR (ข้อบกพร่องที่มีผลกระทบอย่างมาก ต่อประสิทธิภาพการทำงาน)
  4. MINOR (ข้อบกพร่องที่มีผลกระทบเล็กน้อย ต่อประสิทธิภาพการทำงาน)
  5. INFO (ไม่พบข้อบกพร่อง)

--

--

No responses yet