sonar-swift-00
ว่าง ๆ ช่วงฝนตกมานั่งวิเคราะห์ code ของภาษา Swift ด้วย SonarQube กันหน่อย
ถ้าไปดูใน SonarQube จะพบว่ามี plugin ให้ใช้แล้ว
แต่ว่ามันเป็น commercial หรือเสียเงินนั่นเอง
ดังนั้นจึงไปลองหาของฟรีและไปพบกับ Sonar Swift
จึงนำมาทดลองใช้กันหน่อย

เริ่มต้นด้วยการดูหน่อยสิว่า Sonar Swift มันมีอะไรให้ใช้บ้าง ?

  • การทดสอบทั้ง Unit test และ UI Test ผ่าน xcodebuild
  • และทำรายงานสรุปผลการทดสอบด้วย xcpretty
  • เรื่องของ code coverage ใช้งาน Slather
  • ตรวจสอบ issue ต่าง ๆ ด้วย SwiftLint ซึ่งสามารถดูเพิ่มเติมได้จาก blog การใช้งาน SwiftLint
  • ตรวจสอบเรื่อง complexity หรือความซับซ้อนของ code ด้วย Lizard
  • อีกทั้งยังสามารถตรวจสอบเรื่อง code ที่ซ้ำซ้อน และข้อมูลพื้นฐานของ code ได้

การติดตั้ง plugin

ทำการ download ไฟล์ backelite-sonar-swift-plugin-0.2.4.jar
จากนั้นนำไปวางใน $SONARQUBE_HOME/extensions/plugins ของ SonarQube
จากนั้นทำการ start หรือ restart service ของ SonarQube
แล้วเข้าไปตรวจสอบว่า plugin ติดตั้งเรียบร้อยหรือไม่
ในเมนู System -> Update Center
ถ้าติดตั้งสำเร็จจะแสดงดังรูป

sonar-swift-01

มาถึงการใช้งานกันบ้าง

ใน Xcode project ต้องทำการสร้างไฟล์ sonar-project.properties ขึ้นมา
สำหรับกำหนด configuration ต่าง ๆ ของ project
เพื่อส่งผลการวิเคราะห์ไปยัง SonarQube
แสดงดังนี้

สามารถดู code ตัวอย่างพร้อม configuration ได้ที่ Github::Demo Sonar Swift

จากนั้นเริ่มต้นวิเคราะห์ code ด้วยคำสั่ง

$sh run-sonar-swift.sh

ผลการทำงานให้เปิด SonarQube จะแสดงผลดังนี้

sonar-swift-02

ยังไม่พอนะ ยังสามารถทำงานร่วมกับ Fastlane ได้อีกด้วย

เพียงเท่านี้เราก็สามารถวิเคราะห์ code ที่พัฒนาด้วยภาษา Swift แบบง่าย ๆ ได้แล้วครับ
ทำให้เรารู้ได้เลยว่า ควรแก้ไข code อะไร และ ตรงไหนได้บ้าง
น่าจะทำให้การเขียน code สนุกยิ่งขึ้นนะ