This is a simple crud application built with Flutter and Firebase.
- User authentication with Firebase Auth
- User profile management
- Client management
- Instalation Light management
- Vehicule management
- Employee management
- Cam management
This project uses SonarQube for static code analysis and quality monitoring.
- Docker and Docker Compose installed
- Flutter SDK installed
# Make scripts executable
chmod +x download-sonar-flutter-plugin.sh
chmod +x run_sonar_analysis.sh
# Run complete analysis
./run_sonar_analysis.sh
- URL: http://localhost:9000
- Default credentials: admin/admin
- Project: Client Service
# Start only SonarQube
docker-compose up -d sonarqube
# Stop SonarQube
docker-compose down
# View logs
docker-compose logs -f sonarqube
The project includes comprehensive tests organized by category:
# Run all tests
flutter test
# Run tests by category
flutter test test/crud/
flutter test test/viewmodels/
flutter test test/utils/
flutter test test/services/
flutter test test/repositories/
# Run tests with coverage
flutter test --coverage
The project uses GitHub Actions for continuous integration:
- Build and Test: Runs on every push and pull request
- SonarQube Analysis: Quality gate analysis with coverage
- Release: Automatic release creation with assets
- SonarQube Setup Guide - Complete setup instructions
- Test Documentation - Test organization and examples
Este README explica cómo usar SonarQube con Docker para el análisis de calidad de código del proyecto Client Service.
- Docker instalado
- Docker Compose instalado
- Flutter SDK instalado
-
Clonar el repositorio (si no lo has hecho ya):
git clone <tu-repositorio> cd client_service
-
Hacer ejecutables los scripts:
chmod +x download-sonar-flutter-plugin.sh chmod +x run_sonar_analysis_docker.sh
-
Ejecutar el análisis completo:
./run_sonar_analysis_docker.sh
¡Eso es todo! El script se encarga de todo automáticamente.
- ✅ Descarga el plugin sonar-flutter
- ✅ Inicia SonarQube con Docker
- ✅ Espera a que SonarQube esté listo
- ✅ Instala dependencias de Flutter
- ✅ Ejecuta tests con cobertura
- ✅ Genera reportes de tests
- ✅ Ejecuta el análisis de SonarQube
- ✅ Muestra los resultados
Una vez que el análisis esté completo, puedes acceder a SonarQube en:
Credenciales por defecto:
- Usuario:
admin
- Contraseña:
admin
Proyecto: Client Service
docker-compose up -d sonarqube
docker-compose down
docker-compose logs -f sonarqube
docker-compose run --rm sonar-scanner \
-Dsonar.projectKey=client_service \
-Dsonar.projectName="Client Service" \
-Dsonar.sources=lib,pubspec.yaml \
-Dsonar.tests=test \
-Dsonar.flutter.coverage.reportPath=coverage/lcov.info \
-Dsonar.flutter.tests.reportPath=tests.output
SonarQube verificará automáticamente:
- Coverage: Porcentaje de cobertura de código
- Duplications: Código duplicado
- Issues: Problemas de calidad (bugs, vulnerabilidades, code smells)
- Maintainability: Mantenibilidad del código
- Reliability: Confiabilidad del código
- Security: Seguridad del código
- Code Coverage: Debe estar por encima del 80%
- Technical Debt: Debe ser mínimo
- Code Smells: Deben ser pocos o nulos
- Bugs: Deben ser cero
- Vulnerabilities: Deben ser cero
Edita el archivo docker-compose.yml
para cambiar:
- Puerto de SonarQube
- Configuración de memoria
- Volúmenes de datos
Edita el archivo sonar-project.properties
para:
- Cambiar exclusiones de archivos
- Modificar configuración del analizador
- Ajustar rutas de reportes
# Instalar Docker en Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose
# Agregar usuario al grupo docker
sudo usermod -aG docker $USER
# Reiniciar sesión después
# Verificar estado
docker-compose ps
# Ver logs
docker-compose logs sonarqube
# Reiniciar
docker-compose restart sonarqube
# Descargar plugin manualmente
./download-sonar-flutter-plugin.sh
# Reiniciar SonarQube
docker-compose restart sonarqube
# Verificar que los tests se ejecuten
flutter test --coverage
# Verificar archivo de cobertura
ls -la coverage/lcov.info
Si encuentras problemas o quieres mejorar la configuración:
- Abre un issue en el repositorio
- Describe el problema o mejora
- Incluye logs si es necesario
- Proporciona pasos para reproducir el problema