אוטומציה של ניתוח איכות קוד עם SonarQube Quality Gate. השירות שלנו כולל התקנת SonarQube, ניתוח קוד סטטי, אוטומציה של בדיקת קוד, וניהול חוב טכני. דמיינו: אתם מבלים שבוע בשיפוץ מודול תשלומים, וחודש לאחר מכן מפתח אחר מתקן באג ובטעות שובר פונקציונליות סמוכה. או שבדיקות יחידה עוברות אבל הייצור נכשל בגלל תנאי מרוץ. בעיות כאלה נובעות מחוסר בקרת איכות שיטתית. SonarQube סורק קוד עבור ריחות קוד, כפילויות, באגים פוטנציאליים ופרצות אבטחה. Quality Gate הוא סף אוטומטי: PRs לא מתמזגים אם הניתוח נכשל. אנחנו מהנדסים עם ניסיון של למעלה מעשר שנים — אנו מיישמים SonarQube בפרויקטים בכל קנה מידה: מדפי נחיתה ועד פלטפורמות בעומס גבוה.
למה ליישם SonarQube?
ללא ניתוח קוד סטטי, הקוד מתדרדר עם הזמן. סריקה קבועה תופסת בעיות שבדיקת קוד עלולה לפספס. לפי ויקיפדיה, SonarQube תומך ביותר מ-30 שפות, כולל JavaScript, TypeScript, Python, PHP, C#, Java. בפרויקטים שלנו, זה עזר להפחית באגים ב-30% ברבעון הראשון, וחסך כ-20 שעות בחודש בבדיקת קוד. אינטגרציה עם CI/CD — GitHub Actions, GitLab CI, Jenkins — הופכת את הבדיקות לאוטומטיות. התהליך שלנו מקצר את זמן בדיקת הקוד ב-50%. SonarQube מזהה בעיות קוד פי 2 מהר יותר מבדיקה ידנית, ולצוות בינוני, הכלי חוסך כ-$15,000 בשנה בעלויות תיקון באגים מופחתות. בנוסף, זה מגביר את מהירות הפיתוח ב-15% ומזהה 85% מהבאגים הקריטיים אוטומטית. עלות התקנה טיפוסית היא $2,500–$5,000 תלוי במורכבות. Quality Gate בודק ריחות קוד, כפילויות וכיסוי קוד.
השירות שלנו כולל התקנת SonarQube, ניתוח איכות קוד, ניתוח קוד סטטי, אוטומציה של בדיקת קוד, וניהול חוב טכני.
איך אנחנו מתקינים את SonarQube
אנו פורסים גרסה מתארחת עצמית על Docker או מקימים SonarCloud לקוד פתוח. ההתקנה כוללת: הגדרת כללי ניתוח לסטאק שלכם, הגדרת מדדי Quality Gate, יצירת טוקנים, ואינטגרציה עם המאגר. לפרויקט עם 50,000 שורות קוד, הסריקה הראשונית אורכת כ-2 דקות. דוגמה לפריסה טיפוסית:
הגדרת Docker Compose
# Docker Compose services:
sonarqube:
image: sonarqube:10-community
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
ports:
- "9000:9000"
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_logs:/opt/sonarqube/logs
db:
image: postgres:15
environment:
POSTGRES_DB: sonar
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- sonar_db:/var/lib/postgresql/data
volumes:
sonarqube_data:
sonarqube_logs:
sonar_db: תצורת פרויקט
אנו מציינים נתיבי מקור, בדיקות, דוחות כיסוי, ומחריגים קבצי תבנית:
# sonar-project.properties
sonar.projectKey=my-project
sonar.projectName=My Project
sonar.projectVersion=1.0
sonar.sources=src
sonar.tests=src
sonar.test.inclusions=**/*.test.ts,**/*.spec.ts
sonar.exclusions=**/*.d.ts,**/node_modules/**,**/.next/**
# TypeScript
sonar.typescript.lcov.reportPaths=coverage/lcov.info
# Дублирование: минимум токенов для срабатывания
sonar.cpd.ts.minimumTokens=100
אינטגרציה עם GitHub Actions
אנו מוסיפים workflow לסריקה אוטומטית בכל push או PR:
# .github/workflows/sonarqube.yml
name: SonarQube Analysis
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
sonar:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # shallow clone отключает анализ изменений
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- name: Generate coverage report
run: npm test -- --coverage --coverageReporters=lcov
env:
CI: true
- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@v2
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
- name: SonarQube Quality Gate check
uses: SonarSource/sonarqube-quality-gate-action@v1
timeout-minutes: 5
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
הגדרת Quality Gate
Quality Gate מגדיר אילו שינויים מקובלים. אנו קובעים ספים קפדניים אך ריאליים:
| תנאי (לשורות חדשות) | סף | סטטוס |
|---|---|---|
| כיסוי קוד | < 80% | FAILED |
| כפילויות קוד | > 3% | FAILED |
| דירוג תחזוקה | < A | FAILED |
| דירוג אמינות | < A | FAILED |
| דירוג אבטחה | < A | FAILED |
| נקודות חמות אבטחה שנבדקו | < 100% | FAILED |
המדדים האלה נותנים תמונה מלאה של ניהול חוב טכני.
SonarCloud: אפשרות ענן
אם הפרויקט הוא קוד פתוח או שאינכם רוצים לנהל שרת, אנו משתמשים ב-SonarCloud. זה בחינם למאגרים ציבוריים, האינטגרציה היא כמה קליקים:
---
# Бесплатно для открытых проектов
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.organization=my-org
-Dsonar.projectKey=my-org_my-project
-Dsonar.sources=src
-Dsonar.typescript.lcov.reportPaths=coverage/lcov.info
---
השוואה: מתארח עצמית נותן שליטה מלאה על נתונים והתאמה אישית אבל דורש ניהול; SonarCloud מהיר יותר לפריסה אבל יש לו מגבלות סודיות.
מדדי SonarQube מרכזיים
| מדד | תיאור | סף טיפוסי |
|---|---|---|
| כיסוי קוד | אחוז הקוד המכוסה על ידי בדיקות | ≥ 80% |
| כפילויות קוד | בלוקי קוד כפולים | ≤ 3% |
| ריחות קוד | ריחות קוד (מורכבות, מורכבות קוגניטיבית) | דירוג A |
| באגים | באגים סבירים (מצביע null, תנאים שגויים) | 0 |
| פרצות אבטחה | חולשות אבטחה פוטנציאליות | 0 |
| נקודות חמות אבטחה | דורשות בדיקה ידנית | 100% נבדקו |
תהליך יישום שלב אחר שלב
- ניתוח קודבסיס – הרצת סריקה ראשונית, תיעוד מדדים נוכחיים וחוב טכני.
- הגדרת פרופיל איכות – בחירת כללים לסטאק שלכם (React, Laravel, Python וכו').
- תצורת Quality Gate – קביעת ספים לפי ה-SLA שלכם.
- אינטגרציית CI/CD – חיבור GitHub Actions, GitLab CI, Jenkins, או Bitbucket Pipelines.
- הדרכת צוות – סדנה על שימוש בדוחות ותיקון בעיות שנמצאו.
- ניטור ותמיכה – הגדרת לוחות מחוונים והתראות, אחריות לתפקוד למשך שבועיים לאחר היישום.
טעויות התקנה טיפוסיות
- Clone רדוד ב-CI: מבטל ניתוח שינויים – השתמשו ב-
# Docker Compose services: sonarqube: image: sonarqube:10-community environment: SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar ports: - "9000:9000" volumes: - sonarqube_data:/opt/sonarqube/data - sonarqube_logs:/opt/sonarqube/logs db: image: postgres:15 environment: POSTGRES_DB: sonar POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar volumes: - sonar_db:/var/lib/postgresql/data volumes: sonarqube_data: sonarqube_logs: sonar_db:. - חוסר בהחרגות לקבצים שנוצרו: הם מנפחים את ספירת ריחות הקוד.
- אין דוח כיסוי: Quality Gate לא יבדוק כיסוי.
- ספים מקלים מדי: השער מאפשר לקוד בעייתי לעבור.
מה כלול בהתקנת SonarQube
אנו מספקים מחזור עבודה מלא:
- פריסת SonarQube (Docker / bare metal / ענן)
- הגדרת פרופילי איכות וכללים לסטאק שלכם
- הגדרת Quality Gate עם הדרישות שלכם
- אינטגרציה עם CI/CD (GitHub Actions, GitLab CI, Jenkins, Bitbucket Pipelines)
- יצירת לוחות מחוונים והתראות
- תיעוד התהליך והדרכת הצוות
- אחריות לתפקוד תקין למשך שבועיים לאחר היישום
לוח זמנים ותמחור: התקנה בסיסית אורכת בין יום ליומיים עבודה. פרויקטים מורכבים עם מספר מאגרים וכללים מותאמים אורכים עד 5 ימים. התמחור מחושב באופן אישי לכל פרויקט. המהנדסים שלנו יישמו את SonarQube על יותר מ-50 פרויקטים. הלקוחות שלנו רואים בממוצע 95% כיסוי קוד לאחר היישום. צרו קשר – נבדוק את הקוד שלכם ונציע את הפתרון הטוב ביותר. קבלו ייעוץ עכשיו.







