Derniere mise a jour : 9 fevrier 2026

Analyseur de Code Source

2024 Outil Python

Presentation

Objectif principal : Un outil qui analyse un projet de code et sort des metriques : nombre de lignes, de fonctions, de classes, complexite cyclomatique, detection de code duplique. Genre un mini SonarQube.

Technologies utilisees : Python avec le module ast pour parser le code Python. Pour les autres langages, j'utilise des regex (moins precis mais ca marche). Rapport genere en HTML.

Fonctionnalites cles : Compte lignes de code vs commentaires, liste toutes les fonctions et classes, calcule la complexite de chaque fonction, detecte les fonctions trop longues, trouve le code duplique.

Livrables attendus : Script qui prend un dossier en argument et genere un rapport complet. Supporte Python, JavaScript, et C.

Calendrier previsionnel : Deux semaines. Parser Python avec ast c'est propre, mais les autres langages c'etait plus bricolage.

Parties prenantes & criteres de succes : Projet perso pour analyser mes propres projets et voir ou je peux m'ameliorer.

Le Defi

La complexite cyclomatique. C'est le nombre de chemins possibles dans une fonction (chaque if, for, while ajoute un chemin). Faut parser le code correctement pour la calculer. En Python c'est facile avec ast, en C c'est plus galere.

La Solution

Pour Python, je parcours l'AST et je compte les noeuds If, For, While, ExceptHandler, etc. Pour C et JS, je compte avec des regex les mots-cles if, for, while, switch, catch. C'est approximatif mais ca donne une idee.

Architecture Technique

Module file_scanner.py qui parcourt les dossiers. Module python_analyzer.py qui utilise ast. Module generic_analyzer.py avec les regex pour les autres langages. Module reporter.py qui genere le HTML. Classe CodeFile qui stocke les metriques de chaque fichier.

Points Cles

  • Parsing AST pour Python
  • Calcul de complexite cyclomatique
  • Detection de code duplique

Apercu

Resultats & Apprentissages

J'ai decouvert que certaines de mes fonctions faisaient 200 lignes avec une complexite de 30+. Oups. L'outil m'a aide a identifier les endroits a refactorer. J'ai aussi appris a utiliser le module ast qui est super puissant.

Evolutions Futures

Utiliser des vrais parsers pour C et JavaScript (tree-sitter). Ajouter plus de metriques (couplage, cohesion). Integrer avec Git pour voir l'evolution des metriques dans le temps.

Retour aux projets Me contacter