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>
205 lines
5.7 KiB
Markdown
205 lines
5.7 KiB
Markdown
# Guide d'utilisation de Ruff
|
|
|
|
## Configuration effectuee
|
|
|
|
J'ai configure Ruff pour votre projet FabNum avec deux fichiers :
|
|
|
|
### 1. pyproject.toml
|
|
Configuration principale de Ruff avec :
|
|
- **Longueur de ligne** : 120 caractères maximum
|
|
- **Exclusions** : pgpt/, IA/, batch_ia/ (modules priorite basse)
|
|
- **Regles activees** :
|
|
- Erreurs de style (pycodestyle)
|
|
- Detection de bugs (pyflakes, bugbear)
|
|
- **Docstrings obligatoires** (pydocstyle)
|
|
- Tri automatique des imports (isort)
|
|
- Simplifications de code
|
|
- Detection de code mort
|
|
|
|
### 2. .vscode/settings.json
|
|
Configuration VSCodium pour :
|
|
- Formattage automatique avec Ruff
|
|
- Organisation des imports au save
|
|
- Detection des problemes en temps reel
|
|
- Integration avec pytest
|
|
|
|
## Utilisation dans VSCodium
|
|
|
|
### Actions automatiques
|
|
Lorsque vous ouvrez un fichier Python, Ruff va :
|
|
- Souligner en rouge/jaune les problemes detectes
|
|
- Proposer des corrections rapides (Quick Fix)
|
|
- Organiser les imports quand vous sauvegardez
|
|
|
|
### Actions manuelles
|
|
|
|
**Voir tous les problemes** :
|
|
- Panneau "Problemes" (Ctrl+Shift+M)
|
|
- Filtre par fichier, par type (erreur/warning)
|
|
|
|
**Corriger automatiquement** :
|
|
1. Clic droit sur le code souligne
|
|
2. "Quick Fix..." (Ctrl+.)
|
|
3. Selectionner "Ruff: Fix all auto-fixable problems"
|
|
|
|
**Organiser les imports** :
|
|
- Clic droit > "Organiser les imports"
|
|
- Ou sauvegarde automatique (deja configure)
|
|
|
|
**Formater un fichier** :
|
|
- Clic droit > "Formater le document"
|
|
- Ou Shift+Alt+F
|
|
|
|
## Regles principales pour les docstrings
|
|
|
|
Ruff va exiger des docstrings au format Google :
|
|
|
|
### Fonction simple
|
|
```python
|
|
def calculer_ivc(graph, node):
|
|
"""Calcule l'indice de vulnerabilite competitive pour un noeud.
|
|
|
|
Args:
|
|
graph: Le graphe NetworkX contenant les donnees.
|
|
node: L'identifiant du noeud a analyser.
|
|
|
|
Returns:
|
|
float: La valeur IVC calculee.
|
|
|
|
Raises:
|
|
ValueError: Si le noeud n'existe pas dans le graphe.
|
|
"""
|
|
# code...
|
|
```
|
|
|
|
### Fonction complexe avec exemples
|
|
```python
|
|
def synchroniser_gitea(repo_name, force=False):
|
|
"""Synchronise les donnees locales avec le depot Gitea.
|
|
|
|
Cette fonction compare les timestamps locaux et distants pour determiner
|
|
si une synchronisation est necessaire. En mode force, ignore le cache.
|
|
|
|
Args:
|
|
repo_name: Nom du depot Gitea (DEPOT_FICHES ou DEPOT_CODE).
|
|
force: Si True, force la synchronisation meme si le cache est valide.
|
|
|
|
Returns:
|
|
dict: Dictionnaire avec les cles :
|
|
- 'synced': bool, True si synchronisation effectuee
|
|
- 'files_updated': int, nombre de fichiers mis a jour
|
|
- 'timestamp': str, horodatage de la synchronisation
|
|
|
|
Raises:
|
|
ConnectionError: Si impossible de contacter le serveur Gitea.
|
|
ValueError: Si repo_name n'est pas reconnu.
|
|
|
|
Example:
|
|
>>> result = synchroniser_gitea('DEPOT_FICHES', force=True)
|
|
>>> print(result['files_updated'])
|
|
12
|
|
"""
|
|
# code...
|
|
```
|
|
|
|
### Classe
|
|
```python
|
|
class GraphAnalyzer:
|
|
"""Analyseur de graphes pour les chaines d'approvisionnement.
|
|
|
|
Cette classe fournit des methodes pour analyser les dependances
|
|
et calculer les indices de risque sur un graphe NetworkX.
|
|
|
|
Attributes:
|
|
graph: Le graphe NetworkX a analyser.
|
|
config: Configuration des seuils et parametres.
|
|
"""
|
|
|
|
def __init__(self, graph, config=None):
|
|
"""Initialise l'analyseur avec un graphe.
|
|
|
|
Args:
|
|
graph: Graphe NetworkX des dependances.
|
|
config: Configuration optionnelle (dict).
|
|
"""
|
|
# code...
|
|
```
|
|
|
|
## Ce que Ruff va detecter
|
|
|
|
### Problemes de docstrings
|
|
- Fonctions publiques sans docstring
|
|
- Docstrings mal formatees
|
|
- Arguments non documentes
|
|
- Valeurs de retour non documentees
|
|
|
|
### Problemes de code
|
|
- Imports non utilises
|
|
- Variables definies mais jamais utilisees
|
|
- Code mort (apres return/break)
|
|
- Comparaisons dangereuses (== None au lieu de is None)
|
|
- Lignes trop longues (>120 caracteres)
|
|
- Complexite trop elevee
|
|
|
|
### Suggestions d'amelioration
|
|
- Utiliser pathlib au lieu de os.path
|
|
- Simplifier les comprehensions
|
|
- Utiliser f-strings au lieu de .format()
|
|
- Remplacer list() + comprehension par comprehension directe
|
|
|
|
## Commandes utiles (si Ruff CLI installe)
|
|
|
|
Si vous souhaitez installer Ruff en ligne de commande :
|
|
|
|
```bash
|
|
pip install ruff
|
|
|
|
# Verifier tout le projet
|
|
ruff check app/ utils/
|
|
|
|
# Corriger automatiquement ce qui peut l'etre
|
|
ruff check app/ utils/ --fix
|
|
|
|
# Voir les statistiques
|
|
ruff check app/ utils/ --statistics
|
|
|
|
# Formater le code
|
|
ruff format app/ utils/
|
|
```
|
|
|
|
## Prochaines etapes
|
|
|
|
1. **Rechargez VSCodium** pour que la configuration prenne effet
|
|
2. **Ouvrez un fichier Python** (ex: app/fiches/interface.py)
|
|
3. **Regardez le panneau Problemes** (Ctrl+Shift+M)
|
|
4. Vous verrez la liste des problemes detectes par Ruff
|
|
|
|
Ruff va vous guider pour :
|
|
- Ajouter les docstrings manquantes
|
|
- Corriger les problemes de style
|
|
- Ameliorer la qualite du code
|
|
|
|
## Questions frequentes
|
|
|
|
**Q: Trop de problemes affiches, c'est normal ?**
|
|
R: Oui, la premiere fois Ruff peut detecter beaucoup de choses. Traitez-les progressivement, module par module.
|
|
|
|
**Q: Puis-je desactiver certaines regles ?**
|
|
R: Oui, editez pyproject.toml, section [tool.ruff.lint] > ignore.
|
|
|
|
**Q: Comment ignorer un warning sur une ligne specifique ?**
|
|
R: Ajoutez un commentaire : `# noqa: CODE` (ex: `# noqa: D103` pour ignorer docstring manquante)
|
|
|
|
**Q: formatOnSave est a false, pourquoi ?**
|
|
R: Pour eviter de reformater tout le code d'un coup. Vous pouvez le mettre a true quand vous serez pret.
|
|
|
|
## Fichiers de configuration
|
|
|
|
- **pyproject.toml** : Configuration Ruff (regles, exclusions, style)
|
|
- **.vscode/settings.json** : Integration VSCodium
|
|
- **requirements.txt** : Dependances Python (existe deja)
|
|
|
|
## Support
|
|
|
|
Pour plus d'informations : https://docs.astral.sh/ruff/
|