feat(doxygen): add option to generate Doxygen documentation before coverage check

This commit is contained in:
RaffaelW 2026-03-20 21:37:12 +01:00
parent ec045f8610
commit 94628b8523
3 changed files with 28 additions and 2 deletions

View file

@ -11,7 +11,8 @@ exclude: |
.*\.o| .*\.o|
flake.lock| flake.lock|
dependencies.lock| dependencies.lock|
assets/case/ assets/case/|
docs/doxygen/
) )
repos: repos:
@ -113,7 +114,8 @@ repos:
name: doxygen code coverage name: doxygen code coverage
language: system language: system
entry: tools/doxy-coverage.py entry: tools/doxy-coverage.py
args: [docs/doxygen/xml, --threshold=40, --summary-only] args:
[docs/doxygen/xml, --threshold=40, --summary-only, --generate-docs]
types_or: [c, c++, header] types_or: [c, c++, header]
verbose: false verbose: false
require_serial: true require_serial: true

1
bootloader Submodule

@ -0,0 +1 @@
Subproject commit 0bf633be000a2b62796e071a18b93c1018d3e369

View file

@ -42,6 +42,7 @@ __copyright__ = "Copyright (C) 2014 Alvaro Lopez Ortega"
from filecmp import cmp from filecmp import cmp
import os import os
import subprocess
import sys import sys
import argparse import argparse
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
@ -62,6 +63,20 @@ def FATAL(*objs):
sys.exit(0 if ns.no_error else 1) sys.exit(0 if ns.no_error else 1)
def generate_docs():
print("Generating Doxygen documentation...")
proc = subprocess.run(
"doxygen Doxyfile",
shell=True,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
if proc.returncode == 0:
print("Documentation generated")
else:
FATAL("Failed to generate documentation. Exiting.")
def parse_file(fullpath): def parse_file(fullpath):
tree = ET.parse(fullpath) tree = ET.parse(fullpath)
@ -200,12 +215,20 @@ def main():
default=ACCEPTABLE_COVERAGE, default=ACCEPTABLE_COVERAGE,
type=int, type=int,
) )
parser.add_argument(
"--generate-docs",
action="store_true",
help="Generate Doxygen documentation before checking coverage",
)
global ns global ns
ns = parser.parse_args() ns = parser.parse_args()
if not ns: if not ns:
FATAL("ERROR: Couldn't parse parameters") FATAL("ERROR: Couldn't parse parameters")
if ns.generate_docs:
generate_docs()
# Parse # Parse
files = parse(ns.dir) files = parse(ns.dir)