วิธีทำ Automated Code Review ด้วย SonarCloud ใน GitHub Actions

ที่มาภาพ: 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

Related

บทความที่เกี่ยวข้อง

วิธีติดตั้งและกำหนดค่า Apache Kafka บน macOS เพื่อประมวลผลสตรีมข้อมูลแบบเรียลไทม์Growth
15 กรกฎาคม 2569 เวลา 19:00

วิธีติดตั้งและกำหนดค่า Apache Kafka บน macOS เพื่อประมวลผลสตรีมข้อมูลแบบเรียลไทม์

การใช้ Apache Kafka เพื่อประมวลผลสตรีมข้อมูลแบบเรียลไทม์บน macOS ไม่จำเป็นต้องซับซ้อน หากทำตามขั้นตอนที่จัดเตรียมไว้ให้ชัดเจน คุณจะได้ระบบพร้อมใช้งานในไม่กี่นาทีและสามารถเริ่มพัฒนาแอปพลิเคชันสตรีมมิงไ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ9 นาที
วิธีติดตั้งและใช้งาน Temporal.io บน macOS เพื่อจัดการ workflow แบบกระจายอย่างปลอดภัยGrowth
15 กรกฎาคม 2569 เวลา 11:30

วิธีติดตั้งและใช้งาน Temporal.io บน macOS เพื่อจัดการ workflow แบบกระจายอย่างปลอดภัย

**บทความนี้จะพาคุณจากศูนย์จนสามารถติดตั้งและใช้งาน Temporal.io บน macOS เพื่อจัดการ workflow แบบกระจายได้อย่างปลอดภัย**

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีติดตั้งและใช้งาน Wireshark บน macOS เพื่อวิเคราะห์เครือข่ายอย่างปลอดภัยGrowth
14 กรกฎาคม 2569 เวลา 20:30

วิธีติดตั้งและใช้งาน Wireshark บน macOS เพื่อวิเคราะห์เครือข่ายอย่างปลอดภัย

Wireshark เป็นเครื่องมือวิเคราะห์แพ็กเก็ตระดับมืออาชีพ ที่ทำงานบน macOS ได้อย่างเต็มประสิทธิภาพ บทความนี้จะสอนวิธีติดตั้งและใช้งาน Wireshark อย่างปลอดภัยเพื่อให้คุณสามารถตรวจสอบเครือข่ายของตนเองได้โดย…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีติดตั้งและกำหนดค่า HashiCorp Vault บน Ubuntu เพื่อจัดการ Secrets อย่างปลอดภัยGrowth
14 กรกฎาคม 2569 เวลา 19:00

วิธีติดตั้งและกำหนดค่า HashiCorp Vault บน Ubuntu เพื่อจัดการ Secrets อย่างปลอดภัย

การจัดการ Secrets อย่างปลอดภัยเป็นหัวใจของระบบที่ต้องรักษาความลับ เช่น API Key, รหัสผ่าน ฯลฯ HashiCorp Vault เป็นเครื่องมือระดับองค์กรที่ออกแบบมาเพื่อเก็บและควบคุมการเข้าถึง Secrets ได้อย่างเข้มงวด บท…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ10 นาที
คัดลอกลิงก์แล้ว!