# Doxyfile — etm-powersync-energy-plugin-etm # Doxygen 1.9.8 # # Périmètre : energyplugin/etm/ UNIQUEMENT. Le code amont forké # (SmartChargingManager et satellites) n'est pas le nôtre ; l'inclure rendrait # la mesure ininterprétable. # # ANGLE MORT ASSUMÉ : les ajouts marqués « // [ETM] » dans les en-têtes amont # (energyplugin/smartchargingmanager.h) sont hors de ce périmètre et ne sont # mesurés par aucune configuration tant que la frontière est un répertoire. Ils # sont peu nombreux, déjà marqués, et documentés à la main — cf. la définition # de fait dans AGENTS.md. # # ATTENTION — le graphe d'héritage est TRONQUÉ, et c'est voulu. # « class EnergyArbitrator : public SmartChargingManager » est l'arête la plus # intéressante du dépôt. Vérifié sur la sortie réelle (2026-08-11) : l'arête est # bien DESSINÉE — doxygen rend une classe de base non résolue en boîte simple. # Ce qui manque, c'est tout ce qu'il y a derrière : la boîte est un cul-de-sac, # sans membres, sans ancêtres, et non cliquable (aucun href dans le SVG). Le # graphe dit « ça hérite de là » sans pouvoir dire de quoi il hérite. # La cause est le périmètre : la classe de base vit dans energyplugin/, hors # INPUT. Élargir INPUT pour « réparer » ferait entrer tout le code amont dans la # mesure et exploser le compte d'avertissements — exactement ce que le périmètre # ci-dessus évite. Le graphe est incomplet par choix, pas par oubli. # # ATTENTION — le nombre d'avertissements dépend des générateurs de sortie # activés. Sans aucun générateur, doxygen 1.9.8 émet des « not documented » sur # des membres qui SONT documentés (constaté : 163 sans sortie, 113 avec # HTML+XML, sur le même arbre). GENERATE_HTML et GENERATE_XML doivent donc # rester à YES : c'est ce qui rend le comptage honnête. Ne pas les désactiver # pour « aller plus vite ». PROJECT_NAME = "etm-powersync-energy-plugin-etm" PROJECT_BRIEF = "Moteur HEMS ETM — couche etm/ (arbitre, scheduler, adaptateurs)" OUTPUT_DIRECTORY = doc-generated CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = French # --- Périmètre ------------------------------------------------------------- INPUT = energyplugin/etm RECURSIVE = YES FILE_PATTERNS = *.h *.cpp # --- Extraction ------------------------------------------------------------ # EXTRACT_ALL = NO : sans cela doxygen documente tout d'office et n'avertit de # rien. C'est le réglage qui rend la vérification possible. EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = NO # --- Avertissements -------------------------------------------------------- WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = YES # WARN_AS_ERROR reste NO : le job CI n'est pas bloquant tant que l'étape 3 de # specs/spec_ecs.md n'est pas close (relayrouter.h et le noyau de calcul sont # différés jusque-là). Passer à YES à ce moment, pas avant. WARN_AS_ERROR = NO QUIET = YES WARN_LOGFILE = doc-generated/warnings.txt # --- Sorties --------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html GENERATE_LATEX = NO # XML : consommable par Breathe si le dépôt s'aligne un jour sur une chaîne # Sphinx. Coût mesuré : ~180 ms, 73 fichiers, 1,5 Mo. GENERATE_XML = YES XML_OUTPUT = xml # --- Préprocesseur --------------------------------------------------------- # Neutralise les macros Qt (sinon Q_OBJECT est lu comme une déclaration) et # définit ETM_ARBITRATOR, sans quoi les blocs #ifdef de l'arbitre seraient # ignorés. ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES PREDEFINED = Q_OBJECT= \ Q_GADGET= \ Q_PROPERTY(x)= \ Q_INVOKABLE= \ Q_DECLARE_METATYPE(x)= \ Q_ENUM(x)= \ Q_UNUSED(x)= \ ETM_ARBITRATOR \ "Q_DECL_OVERRIDE=override" # --- Divers ---------------------------------------------------------------- JAVADOC_AUTOBRIEF = NO QT_AUTOBRIEF = NO MARKDOWN_SUPPORT = YES OPTIMIZE_OUTPUT_FOR_C = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO # --- Graphes (Graphviz) ---------------------------------------------------- # graphviz est une dépendance de la CIBLE DOC, pas du build du paquet : rien à # installer dans le conteneur build-cross-arm64, qui n'a que faire de dot. # Debian/Ubuntu : apt install graphviz HAVE_DOT = YES # CALL_GRAPH / CALLER_GRAPH restent à NO, et ce n'est pas une question de coût. # Le moteur est SIGNAL-DRIVEN : powerBalanceChanged → verifyOverloadProtection() # n'est pas un appel mais une connexion Qt, invisible à l'analyse statique. Un # graphe d'appel montrerait update() comme un point d'entrée orphelin et # raterait le mécanisme principal de la couche L4. Un schéma faux vaut moins # que pas de schéma. CALL_GRAPH = NO CALLER_GRAPH = NO # Ce que dot apporte réellement ici : héritage, collaboration, inclusions. CLASS_GRAPH = YES COLLABORATION_GRAPH = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = NO DIRECTORY_GRAPH = YES TEMPLATE_RELATIONS = NO # SVG : lisible à toute échelle et diffable, contrairement au PNG. DOT_IMAGE_FORMAT = svg INTERACTIVE_SVG = YES # Au-delà, doxygen tronque plutôt que de produire un pavé illisible — un graphe # qu'on ne peut pas lire ne documente rien. DOT_GRAPH_MAX_NODES = 60 MAX_DOT_GRAPH_DEPTH = 3 DOT_CLEANUP = YES