Что такое Code quality gate failed?

Ошибка Code quality gate failed возникает, когда код не проходит установленные проверки качества, такие как линтеры, форматтеры, тесты покрытия или другие метрики качества.

Причины возникновения

  • Нарушения стиля кодирования
  • Низкое покрытие тестами
  • Нарушения сложности кода
  • Дублирование кода
  • Неиспользуемые импорты или переменные
  • Проблемы с безопасностью кода
  • Нарушения архитектурных правил

Как отладить ошибку

  1. Проверь отчеты качества - изучи детальные результаты проверок
  2. Проверь локальные проверки - запусти линтеры локально
  3. Проверь метрики покрытия - убедись в достаточности тестов
  4. Проверь сложность кода - найди проблемные функции
  5. Проверь дублирование - найди повторяющийся код

Как исправить ошибку

1. Исправь нарушения стиля кода

1# Использование black для Python
2# Установка
3pip install black
4
5# Форматирование
6black src/
7
8# Проверка без изменений
9black --check src/
1// Использование ESLint для JavaScript
2// Установка
3npm install eslint --save-dev
4
5// Проверка
6npx eslint src/
7
8// Автоисправление
9npx eslint src/ --fix

2. Улучши покрытие тестами

1# pytest для Python
2# Установка
3pip install pytest pytest-cov
4
5# Запуск с покрытием
6pytest --cov=src/ --cov-report=html
7
8# Минимальное покрытие 80%
9pytest --cov=src/ --cov-fail-under=80
 1// Jest для JavaScript
 2// package.json
 3{
 4  "scripts": {
 5    "test": "jest --coverage",
 6    "test:watch": "jest --watch"
 7  },
 8  "jest": {
 9    "collectCoverageFrom": [
10      "src/**/*.{js,jsx}",
11      "!src/**/*.test.{js,jsx}"
12    ],
13    "coverageThreshold": {
14      "global": {
15        "branches": 80,
16        "functions": 80,
17        "lines": 80,
18        "statements": 80
19      }
20    }
21  }
22}

3. Настрой CI/CD для проверки качества

 1# .github/workflows/quality-check.yml
 2name: Code Quality Check
 3on: [push, pull_request]
 4
 5jobs:
 6  quality:
 7    runs-on: ubuntu-latest
 8    steps:
 9    - uses: actions/checkout@v3
10    
11    - name: Set up Python
12      uses: actions/setup-python@v4
13      with:
14        python-version: '3.11'
15    
16    - name: Install dependencies
17      run: |
18        pip install black flake8 pytest pytest-cov mypy
19    
20    - name: Run black
21      run: black --check src/
22    
23    - name: Run flake8
24      run: flake8 src/
25    
26    - name: Run mypy
27      run: mypy src/
28    
29    - name: Run tests with coverage
30      run: pytest --cov=src/ --cov-fail-under=80

4. Настрой SonarQube для анализа

 1# .github/workflows/sonar.yml
 2name: SonarQube Analysis
 3on: [push, pull_request]
 4
 5jobs:
 6  sonar:
 7    runs-on: ubuntu-latest
 8    steps:
 9    - uses: actions/checkout@v3
10      with:
11        fetch-depth: 0
12    
13    - name: Set up Python
14      uses: actions/setup-python@v4
15      with:
16        python-version: '3.11'
17    
18    - name: Install dependencies
19      run: pip install -r requirements.txt
20    
21    - name: Run tests
22      run: pytest --cov=src/
23    
24    - name: SonarQube Scan
25      uses: sonarqube-quality-gate-action@master
26      env:
27        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28        SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

5. Настрой pre-commit hooks

 1# .pre-commit-config.yaml
 2repos:
 3- repo: https://github.com/pre-commit/pre-commit-hooks
 4  rev: v4.4.0
 5  hooks:
 6  - id: trailing-whitespace
 7  - id: end-of-file-fixer
 8  - id: check-yaml
 9  - id: check-added-large-files
10
11- repo: https://github.com/psf/black
12  rev: 23.9.1
13  hooks:
14  - id: black
15
16- repo: https://github.com/pycqa/flake8
17  rev: 6.1.0
18  hooks:
19  - id: flake8

Как мониторить подобные ошибки

  • Настрой алерты на failed quality gates
  • Мониторь метрики качества кода
  • Отслеживай покрытие тестами
  • Настрой дашборды качества
  • Используй инструменты для анализа трендов

FAQ

В: Как настроить пороги качества для разных проектов?

О: Учитывай сложность проекта, команду, требования к безопасности и производительности.

В: Что делать с legacy кодом, который не проходит проверки?

О: Постепенно рефактори код, используй исключения для критических участков, планируй улучшения.

В: Как автоматизировать исправление проблем качества?

О: Используй автоформатирование, автоматические исправления линтеров, CI/CD для проверок.

Лучшие практики

  • Настрой качественные проверки с самого начала проекта
  • Используй автоматические инструменты форматирования
  • Поддерживай высокое покрытие тестами
  • Регулярно анализируй метрики качества
  • Настрой pre-commit hooks
  • Документируй стандарты качества кода