ai

SonarQube Analysis กับ Hexagonal Architecture —

sonarqube analysis hexagonal architecture
SonarQube Analysis กับ Hexagonal Architecture —

SonarQube Code Quality Analysis

SonarQube Analysis กับ Hexagonal Architecture —

SonarQube วิเคราะห์ Code Quality ตรวจจับ Bugs, Code Smells, Vulnerabilities รองรับ 30+ ภาษา ใช้ Quality Gates กำหนดมาตรฐาน ใช้ร่วมกับ CI/CD Pipeline

เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง Burp Suite Pro Developer Experience DX —

Hexagonal Architecture แยก Domain ออกจาก External Systems ใช้ Ports and Adapters Pattern ทำให้ Code สะอาด ทดสอบง่าย SonarQube ช่วยตรวจสอบว่า Code ยังคง Clean

เนื้อหาเกี่ยวข้อง — อ่านต่อ: api authentication คือ

SonarQube Setup และ Configuration

# === SonarQube Setup ===

# 1. Docker Compose
# docker-compose.yml
# version: '3.8'
# services:
#   sonarqube:
#     image: sonarqube:community
#     ports:
#       - "9000:9000"
#     environment:
#       SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
#       SONAR_JDBC_USERNAME: sonar
#       SONAR_JDBC_PASSWORD: sonar
#     volumes:
#       - sonarqube_data:/opt/sonarqube/data
#       - sonarqube_extensions:/opt/sonarqube/extensions
#     depends_on:
#       - db
#
#   db:
#     image: postgres:16
#     environment:
#       POSTGRES_USER: sonar
#       POSTGRES_PASSWORD: sonar
#       POSTGRES_DB: sonar
#     volumes:
#       - postgresql_data:/var/lib/postgresql/data

# docker compose up -d
# เข้า http://localhost:9000 (admin/admin)

# 2. SonarScanner CLI
# npm install -g sonarqube-scanner
# หรือ
# brew install sonar-scanner

# 3. sonar-project.properties
cat > sonar-project.properties << 'EOF'
sonar.projectKey=my-hexagonal-app
sonar.projectName=My Hexagonal App
sonar.projectVersion=1.0

# Source
sonar.sources=src
sonar.tests=tests
sonar.sourceEncoding=UTF-8

# Language
sonar.language=py
sonar.python.version=3.11

# Coverage
sonar.python.coverage.reportPaths=coverage.xml
sonar.python.xunit.reportPath=test-results.xml

# Exclusions
sonar.exclusions=**/migrations/**,**/tests/**,**/__pycache__/**
sonar.test.exclusions=**/migrations/**

# Quality Gate
sonar.qualitygate.wait=true
EOF

# 4. รัน Analysis
# sonar-scanner \
#   -Dsonar.host.url=http://localhost:9000 \
#   -Dsonar.login=your-token

# 5. GitHub Actions Integration
# .github/workflows/sonar.yml
# name: SonarQube Analysis
# on: [push, pull_request]
# jobs:
#   sonar:
#     runs-on: ubuntu-latest
#     steps:
#       - uses: actions/checkout@v4
#         with:
#           fetch-depth: 0
#       - uses: actions/setup-python@v5
#         with:
#           python-version: '3.11'
#       - run: |
#           pip install -r requirements.txt
#           pytest --cov=src --cov-report=xml tests/
#       - uses: SonarSource/sonarqube-scan-action@master
#         env:
#           SONAR_TOKEN: }
#           SONAR_HOST_URL: }

echo "SonarQube configured"
echo "  URL: http://localhost:9000"
echo "  Scanner: sonar-scanner CLI"
echo "  CI/CD: GitHub Actions integration"
SonarQube Analysis กับ Hexagonal Architecture —

Best Practices

  • Quality Gates: ตั้ง Quality Gate ให้ Coverage > 80%, ไม่มี Critical Bugs
  • Domain Isolation: Domain Layer ต้องไม่ Import อะไรจาก Adapters
  • Port-first: ออกแบบ Port (Interface) ก่อน แล้วค่อยสร้าง Adapter
  • Test with Fakes: ใช้ In-memory Adapters สำหรับ Unit Tests เร็วและ Isolated
  • CI/CD Gate: รัน SonarQube ใน CI/CD Block Deploy ถ้าไม่ผ่าน Quality Gate
  • Dependency Rule: Dependencies ชี้เข้าใน ไม่ออกนอก Domain ไม่รู้จัก Infrastructure

SonarQube คืออะไร

Open-source Platform วิเคราะห์ Code Quality ตรวจจับ Bugs Code Smells Vulnerabilities Duplications รองรับ 30+ ภาษา Quality Gates มาตรฐาน CI/CD Community Edition ฟรี

แนะนำเพิ่มเติม — หนังสือเทรดที่ SiamCafeBook

เนื้อหาเกี่ยวข้อง — ทำความเข้าใจ MLflow Experiment Cost Optimization ลดค่าใช้จ่าย

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง