HAVE_DOT = YES, mais CALL_GRAPH et CALLER_GRAPH restent à NO, et pas pour une question de coût : le moteur est signal-driven. powerBalanceChanged → verifyOverloadProtection() est 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. Ce que dot apporte réellement : héritage, collaboration, inclusions. SVG, lisible à toute échelle et diffable, avec DOT_GRAPH_MAX_NODES = 60 pour éviter les pavés illisibles. tools/gen-doc.sh : une seule commande, le Doxyfile épinglé. C'est la leçon du piège des générateurs — 163 avertissements sans sortie contre 113 avec HTML+XML sur le même arbre. Un chiffre de référence ne vaut que rattaché à une configuration exacte, et une commande unique empêche qu'on régénère « à sa façon ». Le script signale aussi une version de doxygen différente de la référence 1.9.8. Avertissement ajouté en tête du Doxyfile, à côté de celui sur les générateurs : le graphe d'héritage sera tronqué. EnergyArbitrator : public SmartChargingManager, mais l'amont est hors INPUT. C'est voulu — élargir INPUT ferait exploser le compte d'avertissements. Sans cette note, quelqu'un le « réparera ». graphviz est documenté comme dépendance de la cible doc, pas du build : build-cross-arm64 compile, il ne dessine pas. Hors de ce lot, comme convenu : \defgroup, carte \dot cliquable, WARN_AS_ERROR = YES, hébergement. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
126 lines
5.4 KiB
Plaintext
126 lines
5.4 KiB
Plaintext
# 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 sera TRONQUÉ, et c'est voulu.
|
|
# « class EnergyArbitrator : public SmartChargingManager » est l'arête la plus
|
|
# intéressante du dépôt, et elle n'apparaîtra pas : la classe de base vit dans
|
|
# energyplugin/, hors INPUT, donc doxygen ne la résout pas. Élargir INPUT pour
|
|
# « réparer » le graphe ferait entrer tout le code amont dans la mesure et
|
|
# ferait 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
|