Outil de refactoring assisté par IA pour codebases C++/Qt legacy
| Projet | Lignes de code | Interventions | Reduction complexite |
|---|---|---|---|
| 🏭 Application industrielle | 150 000 | 47 | -35% |
| 🖥️ Interface utilisateur legacy | 85 000 | 32 | -28% |
.\install.ps1 `
-ProjectPath .\samples\SampleProject `
-SolutionFile SampleProject.sln `
-BuildScript "scripts/build.ps1"Le projet SampleProject contient un main.cpp avec plusieurs dettes techniques typiques :
- God Object : Classe Manager monolithique (240 lignes)
- Gros constructeur : 70 lignes d'initialisation
- Fuites memoire : Allocations sans libération
- Fonctions monolithiques : doStuff() fait 7 tâches différentes
/refactor:explain samples/SampleProject/main.cppflowchart LR
E[EXPLAIN] --> P[PROPOSE]
P --> G[GENERATE]
G --> S[SCORE]
E ---|VOUS| R[LISEZ]
P ---|VOUS| D[DECIDEZ]
G ---|VOUS| V[VALIDEZ]
S ---|VOUS| J[JUGEZ]
| Action | Commande | Description |
|---|---|---|
| 🔬 Analyser | /refactor:explain <file> |
Diagnostic complet du code |
| 💡 Proposer | /refactor:propose [--mode safe/deep] |
Suggestions de refactoring |
| ⚡ Appliquer | /refactor:generate <ids> |
Executer les transformations |
| 📈 Mesurer | /refactor:score |
Comparer avant/apres |
Analyse structurelle et identification de la dette technique :
- Structure (classes, methodes, dépendances)
- Dette technique classifiee par sévérité
- Métriques de complexité (cyclomatique, lignes/fonction)
- Éléments Qt spécifiques (Q_OBJECT, signals/slots)
Artefact : .refactor/analysis.md
Identification et classement des cibles potentielles :
| Mode | Risque | Transformations |
|---|---|---|
| 🟢 SAFE | Faible | Renommages, extractions, suppression code mort |
| 🟡 DEEP | Moyen | Split de classes (SRP), changements de signature |
Chaque proposition inclut :
- Identifiant unique
- Type de refactoring
- Niveau de risque avec justification
- Dépendances entre propositions
- Métriques attendues
Artefacts : .refactor/proposal.md, .refactor/proposal.json
Transformations appliquees de manière sécurisée :
- Backup automatique : Copie dans
.refactor/backup/{timestamp}/ - Résolution des dépendances : Tri topologique
- Application : Modifications du code source
- Compilation : Exécution du script de build
- Correction automatique : Max 3 tentatives en cas d'erreur
- Rollback : Restauration si échec
Artefact : .refactor/generate-report.md
Comparaison objective avant/après :
| Métrique | Poids |
|---|---|
| Δ Complexité cyclomatique | 40% |
| Δ Lignes de code | 20% |
| Δ Nombre de fonctions/méthodes | 20% |
| Qualité subjective | 20% |
| Score | Verdict |
|---|---|
| 🏆 90-100 | Opération exceptionnelle |
| ✅ 70-89 | Mission accomplie |
| 👍 50-69 | Opération réussie |
| 🤔 30-49 | Résultat partiel |
| ❄️ 0-29 | Piste encore froide |
Artefact : .refactor/score-report.md
Refactor EXpert connait les spécificités de Qt et les protège :
| Contrainte | Protection |
|---|---|
Q_OBJECT |
Jamais déplacé sans régénération MOC |
| Signals/Slots | Signatures jamais modifiées |
Fichiers ui_*.h |
Ignorés (générés) |
| MOC | Avertissement si impact sur la génération |
.refactor/
├── config.yaml # 📝 Configuration
├── analysis.md # 🔍 Diagnostic (EXPLAIN)
├── proposal.md # 💡 Propositions (PROPOSE)
├── proposal.json # 📋 Propositions parsables
├── generate-report.md # ⚡ Rapport d'execution (GENERATE)
├── score-report.md # 📈 Bilan (SCORE)
└── backup/ # 💾 Sauvegardes
└── 20250126_143022/
└── samples/
└── SampleProject/
└── main.cpp
Le fichier .refactor/config.yaml est généré automatiquement :
user:
name: 'Votre Nom'
language: 'Français'
project:
path: 'C:/MonProjet'
solution: 'MonApp.sln'
build_script: 'build.ps1'
qt:
enabled: true
constraints:
protect_q_object: true
protect_signals_slots: true
exclude_ui_files: true- Vous décidez : L'IA ne modifie jamais du code sans validation explicite
- Progressivité : Interventions ciblées, pas de "big bang"
- Pas d'effet de bord : Chaque refactoring améliore la situation
- Transparence : Tous les risques sont explicités avant intervention
- Sécurité : Backup, compilation et rollback garantis
- Support de CMake (actuellement Visual Studio
.sln) - Génération automatique de tests unitaires
- Détection automatique des patterns récurrents
- Intégration CI/CD
- Mode "brigade" : plusieurs agents en parallèle
- PowerShell 5.1+
- Projet C++/Qt avec fichier
.slnet script de build - Claude Code ou GitHub Copilot
Distribué sous licence MIT - voir le fichier LICENSE pour plus de détails.