Что такое Code quality gate failed?
Ошибка Code quality gate failed
возникает, когда код не проходит установленные проверки качества, такие как линтеры, форматтеры, тесты покрытия или другие метрики качества.
Причины возникновения
- Нарушения стиля кодирования
- Низкое покрытие тестами
- Нарушения сложности кода
- Дублирование кода
- Неиспользуемые импорты или переменные
- Проблемы с безопасностью кода
- Нарушения архитектурных правил
Как отладить ошибку
- Проверь отчеты качества - изучи детальные результаты проверок
- Проверь локальные проверки - запусти линтеры локально
- Проверь метрики покрытия - убедись в достаточности тестов
- Проверь сложность кода - найди проблемные функции
- Проверь дублирование - найди повторяющийся код
Как исправить ошибку
1. Исправь нарушения стиля кода
2. Улучши покрытие тестами
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
- Документируй стандарты качества кода