Skip to content

CI: build before analysis to support C++ Modules#325

Merged
GabrielDosReis merged 1 commit intoGabrielDosReis:mainfrom
gdr-at-ms:ci/analysis-build-step
Mar 17, 2026
Merged

CI: build before analysis to support C++ Modules#325
GabrielDosReis merged 1 commit intoGabrielDosReis:mainfrom
gdr-at-ms:ci/analysis-build-step

Conversation

@gdr-at-ms
Copy link
Copy Markdown
Contributor

Problem

The Analysis CI job fails on projects using C++ Modules because the code analysis action needs .ddi and .modmap files to determine module dependencies and pass the correct compiler flags (-interface, -ifcOutput, -reference). These files are generated by CMake during the build phase (Ninja's dependency scanning step), not during configuration.

Without a build step, the action falls back to analyzing each source independently, which fails for module interface units and any source that imports a module.

Fix

Add a build step (cmake --build build) between Configure and Run Analysis. The build produces:

  • .ddi files (P1689R5 dependency info) — used by the action to determine compilation order
  • .modmap files — response files with -interface, -ifcOutput, and -reference flags passed to cl.exe during analysis
  • Generated source files — if any exist, they are also produced during the build

Related

The code analysis action needs .ddi and .modmap files that CMake
generates during the build phase (dependency scanning).  Without
a build step, the action cannot determine module dependencies or
pass the correct -interface/-ifcOutput/-reference flags to cl.exe.

Add a build step between configure and analysis.
@GabrielDosReis GabrielDosReis merged commit a45d0b8 into GabrielDosReis:main Mar 17, 2026
12 checks passed
@gdr-at-ms gdr-at-ms deleted the ci/analysis-build-step branch March 17, 2026 10:57
GabrielDosReis added a commit that referenced this pull request Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants