Patrick Schurig 3c81f76da5 docs(doxygen): 14 → 6 avertissements, et correction de la note sur le graphe
Première génération réelle avec Graphviz (doxygen 1.9.8, la version de référence) : 14
avertissements, dont 8 introduits par moi cette session — \return et \param manquants sur
la charge utile sg-ready, claimedThingIds(), validateSet() et claimedRelays(). Corrigés.

Les 6 restants sont exactement relayrouter.h et energyarbitrator.h, les deux fichiers
différés jusqu'après l'étape 3 puisqu'ils vont être restructurés. Le résidu est donc
entièrement connu et daté.

CORRECTION — la note que j'avais écrite en tête du Doxyfile était fausse. Elle annonçait
que l'arête « EnergyArbitrator : public SmartChargingManager » n'apparaîtrait pas. Elle
apparaît : doxygen rend une classe de base non résolue en boîte simple. Ce qui manque est
derrière — la boîte est un cul-de-sac, sans membres, sans ancêtres, non cliquable (aucun
href dans le SVG). La conclusion ne change pas, ne pas élargir INPUT ; la description, si.

101 graphes SVG produits, 3,2 Mo de HTML, 1,8 Mo de XML.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 06:54:56 +02:00

130 lines
5.8 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 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