Cette mise a jour complete ameliore significativement la qualite et la maintenabilite du projet. 1. Extension de la couverture de tests Couverture globale passee de 8% a 16% (+100%) - Ajout de 25 nouveaux tests (total: 67 tests, 100% passent) - Nouveaux fichiers de tests: * tests/unit/test_gitea.py (17 tests) * tests/unit/test_fiches_tickets.py (8 tests) Etat de la couverture par module: - utils/gitea.py: 100% - utils/widgets.py: 100% - utils/logger.py: 94% - app/fiches/utils/tickets/core.py: 77% - utils/graph_utils.py: 59% 2. Documentation d'architecture complete Creation de 3 nouveaux documents (30 Ko total): - docs/ARCHITECTURE.md (15 Ko) * Architecture complete du projet * Flux de donnees detailles * Indices de vulnerabilite (IHH, ISG, ICS, IVC) * Structure du graphe NetworkX - docs/MODULES.md (15 Ko) * Guide des 11 modules principaux * Exemples de code (15+ snippets) * Bonnes pratiques * Guide de depannage - docs/README.md (4 Ko) * Index de toute la documentation Contenu documente: - 5 modules applicatifs - 6 modules utilitaires - 4 indices de vulnerabilite avec formules et seuils - Conventions de code 3. Reorganisation de la documentation Structure finale optimisee: - Racine: README.md (mis a jour) + Instructions.md - docs/: 11 documents organises par categorie Fichiers deplaces vers docs/: - README_connexion.md -> docs/CONNEXION.md - GUIDE_LOGS.md -> docs/ - GUIDE_RUFF.md -> docs/ - RAPPORT_RUFF.md -> docs/ - RAPPORT_CORRECTIONS_AUTO.md -> docs/ - REFACTORING_REPORT.md -> docs/ - VERIFICATION_LOGS.md -> docs/ - TODO_IA_BATCH.md -> docs/ 4. Ajout de docstrings 52 fonctions documentees en style Google (100%) Documentation en francais avec Args, Returns, Raises 5. Corrections automatiques Ruff Application de 347 corrections automatiques: - Formatage du code (line-length: 120) - Organisation des imports - Simplifications syntaxiques - Suppressions de code mort - Ameliorations de performance 6. Configuration qualite du code Nouveaux fichiers: - pyproject.toml: configuration Ruff complete - .vscode/settings.json: integration Ruff avec formatOnSave - GUIDE_RUFF.md: documentation du linter - GUIDE_LOGS.md: documentation du logging - .gitignore: ajout htmlcov/ pour rapports de couverture Etat final du projet: - Linter: Ruff configure (15 regles actives) - Tests: 67 tests (100% passent) - Couverture de code: 16% - Docstrings: 52/52 (100%) - Documentation: 11 fichiers organises Impact: - Tests plus robustes et maintenables - Documentation technique complete - Meilleure organisation des fichiers - Workflow optimise avec Ruff - Code pret pour integration continue References: - Architecture: docs/ARCHITECTURE.md - Guide modules: docs/MODULES.md - Tests: tests/unit/ - Configuration: pyproject.toml Co-Authored-By: Claude <noreply@anthropic.com>
6.1 KiB
6.1 KiB
Rapport d'analyse Ruff - Projet FabNum
Date : 2026-02-07
Branche : refactor/ameliorations-structure
Statistiques globales
| Categorie | Nombre | Auto-fixable |
|---|---|---|
| Total problemes detectes | 615 | 322 (52%) |
| Docstrings manquantes | 52 | Non |
| Arguments non documentes | 2 | Non |
| Annotations depreciees | 118 | Oui |
| Imports mal tries | 48 | Oui |
| Style docstrings | 68 | Oui |
| Nommage variables | 83 | Non |
Top 10 des problemes detectes
- UP006 (118) : Annotations de type depreciees (Tuple → tuple, List → list)
- N803 (83) : Noms d'arguments non conformes (G → graph)
- D212 (68) : Style docstrings (resume sur premiere ligne)
- D103 (52) : Docstrings manquantes dans fonctions publiques
- I001 (48) : Imports mal tries ou non formattes
- UP007 (29) : Union types deprecies (Optional[X] → X | None)
- PTH123 (24) : Utiliser pathlib au lieu de open()
- RET504 (17) : Assignation inutile avant return
- RET505 (14) : else inutile apres return
- UP015 (14) : Mode 'r' redondant dans open()
Docstrings manquantes (54 fonctions)
Fichiers prioritaires (logique metier critique)
utils/gitea.py (5 fonctions)
lire_reponse()- Ligne 11ecrire_reponse()- Ligne 16verifier_cache_valide()- Ligne 45lire_contenu_repo()- Ligne 58get_json()- Ligne 80
utils/graph_utils.py (5 fonctions)
recuperer_donnees()- Ligne 20recuperer_donnees_2()- Ligne 35calculer_ihh()- Ligne 59obtenir_operations_et_pays()- Ligne 106calculer_nombre_pays()- Ligne 251
app/plan_d_action/utils/data/plan_d_action.py (12 fonctions)
construire_plan_d_action()- Ligne 17obtenir_dernier_niveau_operation()- Ligne 38recuperer_minerais_operation()- Ligne 78determiner_action_operation()- Ligne 142obtenir_operations_concernees()- Ligne 200calculer_criticite_minerai()- Ligne 241recuperer_pays_minerai()- Ligne 271calculer_isg_moyen()- Ligne 281calculer_ics_moyen()- Ligne 291obtenir_risques_critiques()- Ligne 307calculer_score_risque()- Ligne 329generer_recommandations()- Ligne 355
app/fiches/utils/tickets/core.py (7 fonctions)
creer_ticket()- Ligne 12modifier_ticket()- Ligne 24supprimer_ticket()- Ligne 49lister_tickets()- Ligne 81get_ticket()- Ligne 94ticket_exists()- Ligne 98get_all_tickets()- Ligne 102
app/fiches/utils/tickets/display.py (4 fonctions)
afficher_ticket()- Ligne 14afficher_liste_tickets()- Ligne 26formater_date()- Ligne 55afficher_badge_statut()- Ligne 70
Fichiers secondaires
utils/persistance.py (6 fonctions)
charger_config()- Ligne 11sauver_config()- Ligne 15get_cache_path()- Ligne 146read_cache()- Ligne 149write_cache()- Ligne 152clear_cache()- Ligne 155
utils/visualisation.py (4 fonctions)
afficher_graphique_altair()- Ligne 9creer_graphes()- Ligne 82lancer_visualisation_ihh_ics()- Ligne 156lancer_visualisation_ihh_ivc()- Ligne 174
Autres (11 fonctions)
- app/analyse/interface.py : 1 fonction (ligne 81)
- app/fiches/interface.py : 1 fonction (ligne 20)
- app/fiches/utils/tickets/creation.py : 1 fonction (ligne 174)
- app/personnalisation/interface.py : 1 fonction (ligne 12)
- app/personnalisation/utils/ajout.py : 1 fonction (ligne 7)
- app/personnalisation/utils/import_export.py : 1 fonction (ligne 6)
- app/plan_d_action/utils/data/pda_interface.py : 3 fonctions (lignes 3, 130, 172)
Arguments non documentes (2 fonctions)
-
app/analyse/sankey.py:557 -
afficher_sankey()- Manque : filtrer_ics, filtrer_ivc, niveau_arrivee, niveau_depart, noeuds_arrivee, noeuds_depart
-
app/fiches/utils/dynamic/indice/ics.py:67 -
build_dynamic_sections()- Manque : md_raw
Corrections automatiques disponibles
Ruff peut corriger automatiquement 322 problemes (52%) :
Corrections rapides (5 min)
# Trier les imports
ruff check app/ utils/ --select I001 --fix
# Corriger le style des docstrings
ruff check app/ utils/ --select D212,D202 --fix
# Moderniser les annotations de type
ruff check app/ utils/ --select UP006,UP007 --fix
Corrections a valider (15 min)
# Simplifier les returns
ruff check app/ utils/ --select RET504,RET505,RET507 --fix
# Supprimer code inutile
ruff check app/ utils/ --select UP015,PIE790 --fix
Plan d'action recommande
Phase 1 : Corrections automatiques (20 min)
- Executer les corrections auto-fixables
- Verifier que les tests passent
- Commit
Phase 2 : Docstrings critiques (3-4h)
Priorite par importance metier :
-
utils/gitea.py (30 min)
- Critique : synchronisation avec backend Gitea
-
utils/graph_utils.py (45 min)
- Critique : calculs des indices IHH, IVC, etc.
-
app/plan_d_action/utils/data/plan_d_action.py (1h30)
- Critique : logique metier du plan d'action
-
app/fiches/utils/tickets/* (1h)
- Important : systeme de tickets
-
Autres fichiers (30 min)
- Moins critique mais necessaire
Phase 3 : Corrections manuelles (1-2h)
- Renommer G → graph (83 occurrences)
- Remplacer open() par pathlib (24 occurrences)
- Nettoyer les else inutiles (14 occurrences)
Phase 4 : Validation finale (30 min)
- Executer tous les tests
- Verifier avec Ruff qu'il ne reste que des warnings acceptables
- Commit final
Temps total estime : 6-8h
Commandes utiles
Voir tous les problemes
ruff check app/ utils/
Voir uniquement les docstrings
ruff check app/ utils/ --select D
Corriger automatiquement
ruff check app/ utils/ --fix
Verifier un fichier specifique
ruff check app/plan_d_action/utils/data/plan_d_action.py
Statistiques
ruff check app/ utils/ --statistics
Notes
- Les modules IA/, batch_ia/, pgpt/ sont exclus de l'analyse (priorite basse)
- La convention de docstrings est Google Style
- Longueur de ligne maximale : 120 caracteres
- Tests pytest integres dans la configuration