đź“– DOCUMENTATION

Ă€ propos du portail

Ce que ce portail couvre, comment il fonctionne, et pourquoi il existe.

🎯 Objectif

Le portail n'est pas un simple aide-mémoire : c'est un outil de pilotage du parc des 137 outils pyRevit du plugin ANMA. Il répond à 4 questions :

🚦 Verdict de maturité

Calculé à partir des diagnostics, pas d'un score abstrait :

Un score sur 100 (4 axes : Documentation, Robustesse, Structure, Conventions) complète ce verdict mais ne le décide pas — c'est la présence de problèmes concrets qui tranche.

⚙️ Comment ça fonctionne

script.py → prebuild.py (analyse AST) → JSON → Astro (SSG) → Cloudflare Pages

À chaque git push, Cloudflare relance le scanner Python (analyse statique par AST, 100% déterministe, zéro dépendance), régénère les JSON, et reconstruit le site. Aucune base de données : la seule source de vérité est le code des plugins.

L'explication détaillée d'un outil est générée à la demande par IA (Cloudflare Workers AI) en lisant le code source, et mise en cache. C'est la seule partie non déterministe du portail.

🔍 Critères analysés

Chaque outil est passé au crible de ces règles. Les error bloquent le déploiement, les warning demandent une maintenance, les info sont des pistes d'amélioration.

Sécurité & portabilité (bloqueurs)

CodeSévéritéDétecte
HARDCODED_SECRET error Clé API, mot de passe, token ou JWT codé en dur
EXEC_USAGE error exec()/eval() — exécution de code arbitraire
HARDCODED_ELEMENTID error ElementId numérique en dur (casse hors du projet)
HARDCODED_URL warning URL / endpoint codé en dur
HARDCODED_GUID warning GUID littéral en dur
HARDCODED_PATH warning Chemin absolu (C:\…, \\serveur) en dur

Découplage & interface

CodeSévéritéDétecte
PYREVIT_COUPLING warning Dépendance au framework pyRevit (objectif portabilité)
UI_NOT_WPF warning Interface non-WPF (pyrevit.forms, WinForms)
WPF_NO_XAML info Interface WPF construite en code, sans fichier .xaml
WILDCARD_IMPORT info from X import * — masque les dépendances

Robustesse

CodeSévéritéDétecte
NO_TRY_EXCEPT error Aucun try/except sur > 30 lignes
TRANSACTION_NO_TRY error Transaction Revit sans try/except (risque de corruption)
BARE_EXCEPT warning except: nu (avale toutes les exceptions)

Documentation & métadonnées

CodeSévéritéDétecte
NO_TITLE error __title__ manquant
NO_DOC error __doc__ absent ou trop court
NO_AUTHOR warning __author__ manquant
NO_ICON warning icon.png absent
NO_EXTRA_DOC info Ni bundle.yaml ni DOCUMENTATION.md

Structure

CodeSévéritéDétecte
NO_FUNCTIONS warning Code procédural sans fonction (> 80 lignes)
HIGH_NESTING warning Imbrication trop profonde
LOW_COMMENTS warning Très peu de commentaires
LARGE_SCRIPT info > 800 lignes — envisager un découpage
SMALL_SCRIPT info Script potentiellement incomplet
STALE warning Dernier commit > 12 mois

⚠️ Limites connues