Files
ChatBot/SonarQube_70percent_Analysis.md
Leonid Pershin 40289417bd
Some checks failed
SonarQube / Build and analyze (push) Has been cancelled
add little tests
2025-10-21 04:46:44 +03:00

155 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Анализ: почему покрытие 70%, а не 86%?
## 🔍 Разница между локальным и SonarQube coverage
**Локально (coverlet)**: 86.59%
**SonarQube**: 70%
**Разница**: ~16%
---
## 🤔 Возможные причины
### 1. **"Coverage on New Code" vs "Overall Coverage"**
SonarQube разделяет:
- **Overall Coverage** - покрытие всего проекта
- **Coverage on New Code** - покрытие только изменений в текущей ветке
Вы смотрите на **Coverage on New Code** (70%), который:
- Считается только для файлов, измененных после определенной даты
- Не учитывает старый хорошо покрытый код
- Включает ВСЕ новые изменения (в том числе миграции, если они были изменены)
### 2. **SonarQube может по-другому считать исключения**
Даже с правильными настройками, SonarQube может:
- Не полностью применить exclusions к "New Code"
- Считать строки по-другому (комментарии, пустые строки)
- Учитывать partial classes иначе
---
## ✅ Решения
### Вариант 1: Проверить "Overall Coverage" в SonarQube
Откройте SonarQube dashboard и найдите:
- **Overall Coverage** (должно быть ~86%)
- **Coverage on New Code** (сейчас 70%)
Если **Overall Coverage** ~86%, то все в порядке! Просто нужно:
1. Дождаться merge в master
2. Или добавить больше тестов для нового кода
### Вариант 2: Сбросить "New Code Period"
В SonarQube можно изменить период "New Code":
1. Зайти в Project Settings → New Code
2. Изменить на "Previous version" или "Number of days"
3. Переанализировать проект
### Вариант 3: Добавить больше тестов для конкретных файлов
Давайте найдем, какие ИМЕННО файлы SonarQube считает недопокрытыми.
---
## 🎯 Действия прямо сейчас
### Шаг 1: Проверьте SonarQube dashboard
Найдите страницу "Coverage" в SonarQube и ответьте на вопросы:
1. **Какое "Overall Coverage"?** (не "New Code Coverage")
2. **Какие файлы показаны как недопокрытые?**
3. **Какой период установлен для "New Code"?**
### Шаг 2: Если нужно добавить тесты
Я могу создать дополнительные тесты для:
#### Сервисы без тестов:
-`TelegramBotService` - нет тестов (инфраструктурный код)
#### Сервисы с неполным покрытием (возможно):
- ⚠️ `ModelService` - может быть не все пути покрыты
- ⚠️ `ChatService` - могут быть непокрытые edge cases
- ⚠️ `AIService` - могут быть непокрытые exception paths
#### Команды с возможно неполным покрытием:
- ⚠️ `SettingsCommand` - могут быть edge cases
- ⚠️ `ClearCommand` - могут быть exception paths
---
## 💡 Рекомендации
### Если Overall Coverage ~86%:
**Ваш код отлично покрыт!** Проблема только в "New Code Coverage".
**Решение**:
1. Просто commit и push
2. После merge в master "New Code Coverage" станет "Overall Coverage"
3. Или добавьте comment в SonarQube, объясняющий ситуацию
### Если Overall Coverage тоже ~70%:
Тогда проблема в том, что SonarQube не применяет исключения корректно.
**Решение**:
1. Проверить логи SonarQube scanner в CI/CD
2. Убедиться, что `.opencover.xml` файл создается правильно
3. Возможно добавить `.globalconfig` для Roslyn analyzers
---
## 📊 Ожидаемая метрика после исправления
```
✅ Overall Coverage: 86.59%
⚠️ Coverage on New Code: 70-86% (зависит от периода)
✅ Quality Gate: SHOULD PASS (если смотрим на Overall)
```
---
## 🚀 Что делать СЕЙЧАС
### 1. Проверьте SonarQube
Откройте SonarQube и найдите:
- Overall Coverage (главная метрика)
- Список непокрытых файлов
- New Code Period настройки
### 2. Если Overall Coverage ~86%:
**Все отлично! Push код как есть.**
### 3. Если Overall Coverage ~70%:
Скажите мне, какие КОНКРЕТНЫЕ файлы SonarQube показывает как недопокрытые, и я создам для них тесты.
---
## 📝 Дополнительная информация
### Как увидеть Overall Coverage в SonarQube:
1. Откройте ваш проект в SonarQube
2. На главной странице проекта найдите блок "Coverage"
3. Там должны быть ДВЕ цифры:
- **Coverage** (Overall) - главная метрика
- **Coverage on New Code** - только новые изменения
### Как изменить New Code Period:
1. Project Settings → New Code
2. Выберите один из вариантов:
- **Previous version** (рекомендуется)
- **Number of days** (например, последние 30 дней)
- **Specific analysis** (конкретная дата)
---
**Сообщите мне, какую цифру Overall Coverage вы видите в SonarQube, и я помогу дальше!**