À propos du projet

GitGalaxy est un outil qui construit un graphe structurel agnostique au langage de tout un dépôt directement à partir du texte source, sans nécessiter d'étape de build ni de chaînes d'outils par langage. Il cible les dépôts polyglottes, partiellement cassés, legacy, chargés de dépendances externes ou autrement difficiles à analyser via des workflows build-first. Au lieu d'un parseur distinct par langage, GitGalaxy extrait un vocabulaire commun de signatures structurelles — fonctions, classes, arguments, flux de contrôle, mutation d'état, I/O, APIs, dépendances — et les normalise en un modèle de dépôt déterministe unique. Ce modèle alimente l'analyse d'architecture, la priorisation de l'exposition au risque, la génération de SBOM, l'analyse de refactoring et de propriété, le contexte de base de code orienté IA, et les barrières CI/CD. Une seule commande (`galaxyscope path/to/repo`) produit six sorties coordonnées : - Une synthèse d'architecture LLM (un rapport Markdown compact pour ingénieurs ou agents IA) - SARIF pour l'intégration CI/tableau de bord de sécurité - CycloneDX SBOM pour l'inventaire des dépendances/conformité - SQLite pour un graphe de connaissances de dépôt interrogeable - Données d'audit JSON pour les workflows forensiques/automatisés - Données de visualisation 3D pour la topologie interactive du dépôt La synthèse d'architecture inclut des équations de risque, un prompt d'interprétation intégré, l'état macro et la composition linguistique, la topologie réseau (modularité, points d'articulation, densité cyclique), les points d'étranglement de dépendances, les fonctions et fichiers les plus lourds, les signatures structurelles par fichier avec rayon d'impact PageRank, les listes de cibles de risque ciblées et cumulatives, les audits de chaîne d'approvisionnement, les cibles de refactoring, et une liste détaillée de chaque fichier refusé au scan et pourquoi. GitGalaxy est benchmarké contre Tree-sitter et Universal Ctags sur un corpus figé (Language Crucible). Sur ce corpus, la précision des fonctions validées est de 100% sur les 31 langages comparables à tree-sitter, et il n'est jamais l'outil trouvé en erreur dans un désaccord validé de classe ou d'argument. Le graphe d'import est mesuré dans 20 des 59 langages ; les noms d'appelés dans 11 ; la résolution d'appels dans 3 (Python, TypeScript, Java), avec une précision entre 92,7% et 99,9% mais un rappel entre 41% et 57,1%, donc le fan-in au niveau fonction et le PageRank constituent une borne inférieure. Un programme de cohérence inter-langages (Keyword Rosetta) implante le même programme à 12 sondes dans les 50 langages pris en charge avec des comptes de signaux connus exacts. En moyenne, 94% des langages se situent à ±25% de la médiane inter-langages par métrique contrôlée, et la part de défauts ouverts est de 0,0% (1 sur 2 844 cellules comparables). Échelle réelle : scanner Kubernetes (~1,39M de lignes) prend environ 51 secondes. Le temps de scan suit un modèle ajusté à deux régimes. Les 13 vecteurs par fichier étaient à l'origine nommés `risk_*` et décrits comme des mesures d'exposition au risque. Un programme de validation temporelle (~3 550 snapshots scannés, deux dépôts, trois familles d'étiquettes, tests pré-enregistrés) a constaté que le risque structurel permanent par fichier ne prédit pas les défauts — il se réduit à un nombre de lignes. Deux métriques historiques ont été validées : la récidive (le fichier qui a eu le dernier correctif reçoit le suivant) et l'entropie de changement (Hassan HCM). Les vecteurs sont désormais appelés Structural Surface Profile ; `risk_*` reste la colonne DB/clé JSON pour compatibilité. GitGalaxy est conçu pour un fonctionnement local et en air-gapped : le code source n'est pas envoyé à un service cloud, le scan et la vectorisation se font localement, le scanner n'a aucune exigence réseau à l'exécution, et l'exécution CI/CD peut rester dans l'environnement de l'utilisateur. Installation : `pip install gitgalaxy` (zéro dépendance d'installation) ou `pip install "gitgalaxy[full]"` pour des paquets optionnels supplémentaires. La suite de tests par défaut compte 7 043 tests, dont 6 165 tests par signature sur les 45 langages à signatures structurelles. GitGalaxy ne remplace pas l'analyse de flux de données profonde de CodeQL, l'écosystème de règles de Semgrep, les bases de CVE de dépendances, une preuve d'exploitabilité, un analyseur d'exécution, ni un parseur de langage complet. Il répond à : « À quoi ressemble tout ce dépôt, structurellement, et où faut-il porter l'attention en premier ? »