
ที่มาภาพ: Unknown Source
วิธีทำ Automated Code Review ด้วย SonarCloud ใน GitHub Actions
⚡ สรุป 30 วิ
การตรวจสอบโค้ดอัตโนมัติช่วยให้ทีมพัฒนามั่นใจว่าโค้ดยังคงคุณภาพและปลอดภัยตลอดวงจรชีวิตของซอฟต์แวร์ SonarCloud เป็นบริการคลาวด์ที่ทำหน้าที่สแกนโค้ดเพื่อหาข้อบกพร่อง, **code smells**, และช่องโหว่ด้านความ…
Overview — **What is Automated Code Review?
การตรวจสอบโค้ดอัตโนมัติช่วยให้ทีมพัฒนามั่นใจว่าโค้ดยังคงคุณภาพและปลอดภัยตลอดวงจรชีวิตของซอฟต์แวร์ SonarCloud เป็นบริการคลาวด์ที่ทำหน้าที่สแกนโค้ดเพื่อหาข้อบกพร่อง, code smells, และช่องโหว่ด้านความปลอดภัย ส่วน GitHub Actions จะเป็นตัวกระตุ้นให้การตรวจสอบเกิดขึ้นทุกครั้งที่มีการ push หรือเปิด Pull Request
Tip อย่าลืมเชื่อมต่อ SonarCloud กับ repository ก่อนเริ่มตั้งค่า เพื่อให้ข้อมูลสแกนสะสมและแสดงผลบนแดชบอร์ดได้ทันที
Prerequisites — เตรียมพร้อมก่อนลงมือ
- มีบัญชี GitHub ที่เป็นเจ้าของหรือมีสิทธิ์เขียนใน repository ที่ต้องการทำ CI/CD
- สมัครใช้บริการ SonarCloud (ฟรีสำหรับโครงการโอเพนซอร์ส) และสร้าง Organization ให้ตรงกับ GitHub ของคุณ
- ตั้งค่า SonarCloud token เพื่อให้ GitHub Actions สามารถส่งข้อมูลไปยัง SonarCloud ได้อย่างปลอดภัย
สร้าง Project ใน SonarCloud — Register Repository
- เข้าสู่หน้า Dashboard ของ SonarCloud แล้วคลิก “+ Create new project”
- เลือกเชื่อมต่อกับ GitHub แล้วเลือก repository ที่ต้องการตรวจสอบ
- ตั้งค่า Project Key และ Display Name ให้สอดคล้องกับชื่อ repository
ตั้งค่า Secrets ใน GitHub — Secure Token Storage
- ไปที่ Settings ของ repository > Secrets and variables > Actions
- สร้าง secret ชื่อ `SONAR_TOKEN` ใส่ค่า token ที่ได้จาก SonarCloud
- (Optional) หากต้องการใช้หลาย environment ให้สร้าง secrets เพิ่มเติม เช่น `SONAR_HOST_URL`
กำหนด Workflow ใน GitHub Actions — Define CI Pipeline
สร้างไฟล์ `.github/workflows/sonarcloud.yml` ด้วยโครงสร้างต่อไปนี้
```yaml name: SonarCloud Scan
on: push: branches:
- main
pull_request: types: [opened, synchronize, reopened]
jobs: sonarcloud: runs-on: ubuntu-latest steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin'
- name: Cache SonarCloud packages
uses: actions/cache@v3 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar
- name: Install build tool (Maven/Gradle)
run: | mvn -B -DskipTests clean verify
- name: Run SonarCloud analysis
env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} run: | sonar-scanner \ -Dsonar.projectKey=${{ github.repository }} \ -Dsonar.organization=your-org \ -Dsonar.host.url=https://sonarcloud.io \ -Dsonar.login=$SONAR_TOKEN ```
คำอธิบายขั้นตอนสำคัญ
- Checkout code ดึงซอร์สโค้ดจาก GitHub มาวิเคราะห์
- Set up JDK เนื่องจาก SonarScanner ทำงานบน Java จำเป็นต้องติดตั้งเวอร์ชันที่รองรับ
- Cache SonarCloud packages ลดเวลาโหลด dependencies ในรันต่อเนื่อง
- Install build tool สแกนโค้ดหลังจากโปรเจกต์คอมไพล์เสร็จเพื่อให้ได้ข้อมูลเมตาดาต้าเต็มรูปแบบ
Tip หากใช้ Node.js หรือ Python ให้ปรับส่วน `setup` และ `install` ให้สอดคล้องกับภาษาที่ใช้งาน
ปรับแต่ง Quality Gate — กำหนดเกณฑ์ผ่าน/ไม่ผ่าน
SonarCloud มีฟีเจอร์ *Quality Gates* ที่ทำให้การตรวจสอบเป็นแบบ “Pass/Fail” ตามเงื่อนไขที่ตั้งไว้
| เกณฑ์ | ค่าที่แนะนำ |
|---|---|
| Coverage (%) | ≥ 80% |
| New Bugs | = 0 |
| Security Hotspots | ต้องรีวิวและแก้ไขทั้งหมด |
- ไปที่ Project Settings > Quality Gates แล้วเลือกหรือสร้างกฎใหม่
- ระบุเงื่อนไขตามความต้องการของทีม เพื่อให้ Pull Request ถูกบล็อกเมื่อไม่ผ่านเกณฑ์
ตรวจสอบผลลัพธ์ใน Pull Request — Feedback Loop
เมื่อ workflow รันเสร็จ SonarCloud จะโพสต์สถานะบน PR พร้อมลิงก์ไปยังแดชบอร์ด รายงานประกอบด้วย
- จำนวน Issues, Bugs, Vulnerabilities ที่พบ
- รายการไฟล์ที่มี code smells มากที่สุด
- สถานะ Quality Gate (Pass/Fail)
ทีมสามารถคลิกเข้าไปแก้ไขโดยตรงจาก UI ของ SonarCloud หรือทำการคอมเมนต์ใน PR เพื่ออธิบายว่าควรปรับโค้ดอย่างไร
Tip ใช้ปุ่ม “Mark as Fixed” ใน SonarCloud หลังจาก commit ที่แก้ไขแล้ว เพื่อลบ Issues เก่าออกจากรายงานโดยอัตโนมัติ
การจัดการกับ False Positives — กรณีผลลัพธ์ผิดพลาด
บางครั้ง SonarCloud อาจตรวจพบปัญหาที่จริงๆ แล้วไม่เป็นข้อบกพร่อง
- เปิด Issue ที่ต้องการยกเว้นใน UI
- เพิ่ม annotation `// NOSONAR` ลงในโค้ดบรรทัดนั้น (ใช้เฉพาะกรณีที่จำเป็น)
- ปรับ Rule Profile เพื่อลดความเข้มข้นของบาง rule
การอัพเดต SonarScanner — Keep Tools Fresh
เพื่อให้ได้ผลลัพธ์ที่แม่นยำ ควรตรวจสอบเวอร์ชันของ `sonar-scanner` เป็นประจำ
- เพิ่มขั้นตอนใน workflow เพื่อติดตั้งเวอร์ชันล่าสุดโดยใช้ action `SonarSource/sonarcloud-github-action@v2`
- หรือระบุตัวแปร `SONAR_SCANNER_VERSION` ในไฟล์ YAML
ตัวอย่างการใช้งานจริง — From Push to Merge
- นักพัฒนาฝากโค้ดบน branch feature-x
- GitHub Actions เริ่มทำงานโดยอัตโนมัติ สแกนโค้ดผ่าน SonarCloud
- ผลลัพธ์แสดงว่ามี code smell 2 รายการและ Coverage ต่ำกว่าเกณฑ์
- นักพัฒนาปรับปรุงโค้ดตามข้อเสนอ แก้ไข Issues บน SonarCloud แล้ว commit ใหม่
- Workflow รันอีกครั้ง เมื่อ Quality Gate ผ่าน PR สามารถ Merge ได้
Common Pitfalls — ข้อผิดพลาดที่มักพบ
- ลืมตั้งค่า `SONAR_TOKEN` ใน Secrets ทำให้ workflow ล้มเหลวทันที
- ใช้ Project Key ที่ไม่ตรงกับชื่อ repository ทำให้ผลลัพธ์บันทึกในโปรเจกต์อื่น
- ไม่กำหนดขั้นตอน build ก่อนสแกน ส่งผลให้ SonarCloud รายงาน Coverage เป็น 0%
Tip ตรวจสอบ log ของ GitHub Actions อย่างละเอียดเพื่อหาข้อความ “Authentication failed” หรือ “Project key not found”
สรุป — สิ่งที่ควรจำ
- SonarCloud + GitHub Actions ให้การตรวจสอบโค้ดอัตโนมัติแบบครบวงจร
- ตั้งค่า Secrets, Project Key, และ Quality Gates อย่างถูกต้องเพื่อให้ pipeline ทำงานเสถียร
- ใช้ขั้นตอน checkout build scan ใน workflow เพียงไม่กี่บรรทัดก็เพียงพอ
- ตรวจสอบผลลัพธ์ใน PR เพื่อแก้ไข Issues ก่อน merge ลดความเสี่ยงของ bug และ security flaw
Summary
- เชื่อมต่อ SonarCloud กับ GitHub repository แล้วสร้าง Project Key
- เก็บ `SONAR_TOKEN` เป็น secret ใน GitHub Actions
- สร้าง workflow ที่รวมขั้นตอน checkout, build tool, cache, และ sonar-scanner
- กำหนด Quality Gate ให้สอดคล้องกับมาตรฐานทีม
- ใช้ PR feedback จาก SonarCloud ปรับปรุงโค้ดก่อน merge
- จัดการ false positives ด้วย `// NOSONAR` หรือ rule profile customization
ด้วยขั้นตอนเหล่านี้ คุณจะได้ระบบ Automated Code Review ที่ทำงานอัตโนมัติในทุกการเปลี่ยนแปลงของโค้ด ช่วยให้คุณและทีมพัฒนามั่นใจว่าซอฟต์แวร์มีคุณภาพสูงเสมอ.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีทำ Automated Code Review ด้วย SonarCloud ใน GitHub Actions
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 15 กรกฎาคม 2569 เวลา 19:51



