Skip to content

Outil de refactoring assisté par IA pour codebases C++/Qt legacy. Pipeline en 4 étapes avec validation humaine à chaque étape. Réduit la complexité jusqu'à -42% en production.

License

Notifications You must be signed in to change notification settings

kdridi/refactor-export

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Refactor EXpert

Outil de refactoring assisté par IA pour codebases C++/Qt legacy

License: MIT PowerShell Qt C++ Claude


📊 Impact en Production

Projet Lignes de code Interventions Reduction complexite
🏭 Application industrielle 150 000 47 -35%
🖥️ Interface utilisateur legacy 85 000 32 -28%

🚀 Quick Start

📦 Installation

.\install.ps1 `
    -ProjectPath .\samples\SampleProject `
    -SolutionFile SampleProject.sln `
    -BuildScript "scripts/build.ps1"

🔍 Analyser un fichier problematique

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.cpp

🔄 Pipeline complet

flowchart 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]
Loading

💻 Commandes Reference

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

🔧 Pipeline Detaille

1️⃣ EXPLAIN — Repérage

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

2️⃣ PROPOSE — Suggestions

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

3️⃣ GENERATE — Execution

Transformations appliquees de manière sécurisée :

  1. Backup automatique : Copie dans .refactor/backup/{timestamp}/
  2. Résolution des dépendances : Tri topologique
  3. Application : Modifications du code source
  4. Compilation : Exécution du script de build
  5. Correction automatique : Max 3 tentatives en cas d'erreur
  6. Rollback : Restauration si échec

Artefact : .refactor/generate-report.md

4️⃣ SCORE — Bilan

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


🛡️ Contraintes Qt

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

📁 Structure des Artefacts

.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

⚙️ Configuration

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

🎓 Philosophie

  1. Vous décidez : L'IA ne modifie jamais du code sans validation explicite
  2. Progressivité : Interventions ciblées, pas de "big bang"
  3. Pas d'effet de bord : Chaque refactoring améliore la situation
  4. Transparence : Tous les risques sont explicités avant intervention
  5. Sécurité : Backup, compilation et rollback garantis

🔮 Perspectives

  • 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

📋 Prérequis

  • PowerShell 5.1+
  • Projet C++/Qt avec fichier .sln et script de build
  • Claude Code ou GitHub Copilot

📄 Licence

Distribué sous licence MIT - voir le fichier LICENSE pour plus de détails.

About

Outil de refactoring assisté par IA pour codebases C++/Qt legacy. Pipeline en 4 étapes avec validation humaine à chaque étape. Réduit la complexité jusqu'à -42% en production.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published