◫ZONES DE L'INTERFACE
① HEADER & ZOOM HUD — En-tête et navigation par niveaux de zoom
L'en-tête affiche le titre STATIC ANALYZER et le sous-titre CODE DISASSEMBLER · HEX DUMP · CALL GRAPH · AST.
Le HUD en haut à droite propose trois niveaux de zoom :
MACRO — Vue d'ensemble des modules, hex dump compact, histogramme AST.
MESO — Labels de modules, call graph complet, AST partiel (profondeur 4).
MICRO — Bytes individuels, crosshair avec adresse, AST complet, métriques détaillées.
→ IT : Navigation drill-down dans la base de code. MACRO = vue projet, MESO = vue module, MICRO = vue fonction/ligne.
② EDITOR TOOLBAR — Barre d'outils d'édition de code
File indicator — Affiche le fichier courant avec un point lumineux vert.
+ FICHIER — Crée un nouveau fichier (modal avec nom + template optionnel).
OPEN — Ouvre un fichier existant (liste via API backend ou localStorage).
EDIT — Affiche/Cache le panneau d'édition (slide-in depuis la droite).
RUN — Exécute le code courant (API backend ou fallback JS local).
[ DOC ] — Lien vers cette documentation.
→ IT : Équivalent d'un IDE intégré. Édition, création, ouverture, sauvegarde et exécution de code. Les fichiers sont persistés dans localStorage et peuvent être synchronisés avec un backend (API /exec).
③ CANVAS — MEMORY MAP (Carte mémoire / Hex dump)
Espace central : visualisation de l'empreinte mémoire du code
L'espace central principal affiche une carte mémoire de 4096 octets (0x0000–0x0FFF) :
— Chaque module occupe une plage d'adresses contiguës
— Les cellules sont colorées selon la classification : mint (HEALTHY), gold (DUPLICATE), cyan (DEAD_CODE), red (DEPENDENCY)
— Colonne d'adresses à gauche, règle de calibration en haut
— Séparateurs de banques mémoire tous les 256 octets
— Marquage de début de segment (barre verticale)
— Labels des modules (MESO/MICRO)
— Contenu hexadécimal des bytes (MICRO uniquement)
→ IT : Visualisation de l'empreinte mémoire d'une base de code. Chaque module = un fichier/une librairie. Taille = lignes de code (LOC). Classification = santé du code (code mort, dupliqué, dépendances critiques).
④ CANVAS — CALL GRAPH (Graphe d'appels entre modules)
Superposé à la carte mémoire : relations entre modules
Superposé à la carte mémoire, le call graph montre les relations entre modules :
— Arêtes en cyan (trait plein) = appels normaux (CALL)
— Arêtes en rouge (tirets) = dépendances critiques (DEPENDENCY)
— Routage orthogonal Manhattan
— Chevrons indiquant la direction de l'appel
— Graduations de poids (nombre d'appels) sur chaque arête
— Noeuds avec coins en équerre, labels (MESO/MICRO)
— Métriques détaillées IN/OUT/LOC/ADDR au niveau MICRO
→ IT : Analyse de dépendances entre modules. Détection de dépendances cycliques (DEPENDENCY en rouge), modules isolés (inDeg=0), code non appelé (outDeg=0). Équivalent d'un outil comme Dependency-Cruiser ou Madge.
⑤ CANVAS — AST SECTION (Arbre syntaxique abstrait)
Panneau droit : structure interne du module focalisé
Panneau droit montrant l'AST du module focalisé :
— Niveau MACRO : histogramme de profondeur (barres mint, nombre de noeuds par niveau)
— Niveaux MESO/MICRO : arbre complet avec rails d'ascendance (pointillés), connecteurs en L, marqueurs carrés 4×4, labels type:valeur
— Noeuds classés par couleur (HEALTHY, DUPLICATE, DEAD_CODE)
— Code mort : hachures diagonales sur les noeuds dead
— Troncature automatique avec compteur [+N] au-delà de la profondeur maximale
→ IT : Visualisation de l'AST comme dans un compilateur. Permet de voir la structure du code, la profondeur d'imbrication, et d'identifier le code mort (branches jamais atteintes). Équivalent d'un AST explorer.
⑥ CODE EDITOR PANEL — Panneau d'édition de code
IDE intégré coulissant + modales de gestion de fichiers
Panneau coulissant (580px) depuis la droite :
— En-tête : nom du fichier courant + bouton de fermeture
— Éditeur : textarea pleine hauteur avec caret mint, sélection mint
— Placeholder : instructions (Ctrl+S sauver, Ctrl+Enter exécuter)
— Panneau de sortie (180px) : console avec catégories ok (mint), err (rouge), info (dim)
— Bouton CLEAR pour vider la console
— Auto-sauvegarde après 1.5s d'inactivité
Modales :
— CRÉER UN FICHIER — Nom du fichier + template optionnel
— OUVRIR UN FICHIER — Liste des fichiers (API backend + localStorage), extension, taille, badge [local]
→ IT : IDE intégré minimaliste. Édition de code avec exécution distante (API /exec) ou fallback local (eval JavaScript, ouverture HTML). Supporte .py .sh .js .html .txt. Gestionnaire de fichiers avec fusion backend/localStorage.
⑦ BOTBAR & STATUS — Barre de statut, registres et effets visuels
Dashboard temps réel de santé du code
Botbar (bas de l'écran) :
— LED pulsante (●) — heartbeat visuel
— Ligne de statut : IDLE · MACRO/MESO/MICRO
— Adresse mémoire sous le curseur : ADDR: 0x...
Overlay (surimpressions canvas) :
— Crosshair (MICRO) : réticule plein écran suivant la souris
— Registre de statut (bas-gauche) : MODULES, HEALTHY, DUPLICATE, DEAD, DEP.CRIT avec compteurs
— Indicateur de zoom (bas-droite) : trois carrés M/M/M, celui actif est rempli
Effets visuels :
— Scan line — Ligne horizontale animée (4s) balayant l'écran
— Noise overlay — Bruit fractal SVG (opacité 3%) simulant le grain d'un instrument de laboratoire
→ IT : Dashboard temps réel de santé du code. Compteurs de modules par classification = métriques de qualité logicielle (code coverage, duplication rate, dead code percentage, critical dependencies count). Ambiance « instrument de laboratoire ».
◆CAS D'USAGE
1. AUDIT DE CODE LEGACY — « Qu'est-ce qui est vivant ? »
Un développeur arrive sur un projet legacy de 12 modules. Il ouvre SYMBIOTE.CODE et voit immédiatement :
5 modules HEALTHY, 2 DUPLICATE (ir_gen et linker — probablement copiés-collés), 2 DEAD_CODE
(optimizer et cfg_reader — jamais appelés, outDeg=0), 2 DEPENDENCY (io_driver et net_stack —
couplage fort avec dépendances circulaires). Le call graph montre des flèches rouges entre
io_driver et net_stack : cycle de dépendance identifié.
Action : [ZOOM MACRO] → inspecter les DEP.CRIT → [ZOOM MESO] → analyser le call graph → [ZOOM MICRO] → vérifier l'AST du module problématique
2. REFACTORING — « Que supprimer sans risque ? »
Avant un grand refactoring, l'équipe veut nettoyer le code mort. SYMBIOTE.CODE montre
cfg_reader (145 LOC, inDeg=0, outDeg=0) et optimizer (623 LOC, outDeg=0). Les deux modules
sont en cyan DEAD_CODE. Dans l'AST, les branches marquées dead (hachurées) confirment que
ces fonctions ne sont jamais atteintes. Suppression sans risque validée.
Action : [FOCUS] → sélectionner cfg_reader → [AST MICRO] → vérifier dead branches → [EDITOR] → archiver le code avant suppression
3. ONBOARDING — « Comment le code est-il structuré ? »
Un nouveau développeur doit comprendre l'architecture du projet. Il ouvre SYMBIOTE.CODE
et voit immédiatement : parser est le plus gros module (487 LOC, inDeg=3 — très sollicité),
codegen est le coeur de la chaîne (3 appels entrants, 1 sortant vers optimizer mort).
L'AST montre la structure interne de parser : TokenStream et Parser sont les deux classes
principales, avec parse() qui boucle sur lex(). Le développeur a une carte mentale en 30 secondes.
Action : [ZOOM MESO] → lire les labels → [FOCUS] sur le module → [AST] → parcourir l'arbre → [CALL GRAPH] → suivre les dépendances
4. DÉTECTION DE DUPLICATION — « DRY ou pas DRY ? »
Pendant une revue de code, ir_gen et linker apparaissent tous deux en gold (DUPLICATE).
En zoomant au niveau MICRO, les bytes hex des deux modules montrent des motifs similaires.
Le call graph confirme : les deux modules ont des signatures d'appels quasi identiques
(même inDeg/outDeg). L'équipe décide de fusionner les deux modules en un seul.
Action : [ZOOM MICRO] → comparer les bytes hex → [CALL GRAPH] → vérifier les signatures → [EDITOR] → créer le module fusionné