跳转至

Visual Report Walkthrough

antel analyze (or report: true in the config) produces a self-contained report.html for your project — every style inline, no external dependencies, open it in any browser. Below, demos/resdemo is used as a live example: the full report is embedded, and each block is explained column by column.

View online vs. generate locally

The embedded window below is resdemo's real report (copied after a build). Generate an identical one in your own project:

cd demos/resdemo
antel rebuild
antel analyze               # produces .antel/build/resdemo_antel/report.html

The report in full (resdemo instance)

If the embedded window is cut off, open the original file: resdemo-report.html.

The ten blocks, one by one

resdemo is a GTK4/libadwaita executable configured with pkg_config, data_files, gresource and embed — which lights up every feature of the report. Blocks in page order:

# Block What resdemo shows How to use it
1 Artifacts target .antel/build/resdemo_antel/resdemo, 50.3 KB, probed by file as an ELF executable at a glance: is the artifact built, is the size sane
2 Incremental status hash baseline exists (✓), changed files this run, stale list "I changed it but it didn't rebuild": check log/hashes_diff and log/stale_files first
3 Compile flag statistics -O2×2, -Wall×2, plus the long -I/usr/include/libadwaita-1 ... chain confirm optimization level, macros and warning switches match expectations
4 Resources 10 resource files expanded to file level: data_files 3 items (banner.txt/logo.png/payload.bin), gresource 6 items (XML + 4 referenced files + generated gresource.c at 142.3 KB), embed 1 item (payload.bin + _binary_assets_payload_bin symbol), each with ✓ copied/compiled-in/embedded status verify resources were packaged as expected; the gresource.c size is the real cost of single-file distribution
5 Symbol table 98 symbols classified by nm kind (functions/data/BSS/undefined), each symbol in its own chip see what a source file exposes, hunt undefined references
6 Header dependencies which headers src/main.c includes, derived from obj/main.o.d understand "changing which header triggers what rebuild"
7 Object size distribution gresource.o 34.5 KB, main.o 12.1 KB, unit-annotated bar chart find abnormally large compile units
8 Dynamic dependencies NEEDED: libadwaita-1.so.0 libgtk-4.so.1 libgio-2.0.so.0 ...; full ldd resolution (address and path per entry) check which libraries an executable actually links, whether any is not found
9 Compile commands verbatim commands from compile_commands.json (all -I/-D included) reproduce the exact compile, verify flag injection
10 Log inventory 7 files in log/ with sizes know where each log file lives and how big it is

Where the data comes from

No number in the report is fabricated — every value is produced by a real tool and can be verified directly:

Report data Source
artifact size / type file / stat
symbol classification & names nm
dynamic dependencies readelf -d / ldd
header dependencies the obj/*.o.d files emitted by -MMD
compile flag frequency compile_commands.json (generated by antel itself)
resource type / size file / os.path.getsize
incremental status log/hashes, log/hashes_diff, log/stale_files (maintained by antel)
log inventory a scan of the log/ directory

The Resources block only appears when resources are configured; plain code projects don't show it. Every other block is generated for any project.

More

  • How to trigger: config field report (auto-generate after build) or the antel analyze command
  • How report fields relate to the build directory: build directory layout
  • Other example: demos/antelstats also ships .antel/build/app_app/report.html (the consumer-side report of a versioned shared library)