docs(wiki): audit the remaining pages against the current code
Second pass over the pages the previous commit did not touch.
- External Models: rewritten. There are three models, not two - the buffer
write model (bounded_write/unbounded_write) was missing entirely. Adds
noeffect and the if_ret conditional qualifiers to the resource model, and
corrects the glob syntax: [...] character classes are rejected by the
parsers, although some bundled model headers still mention them.
- Public API: AnalysisConfig gained bufferModelPath, assumeExternalFrameBytes,
the SMT fields, the compile IR cache and the three cross-TU summary indexes.
- CI/CD Integration: adds the base-dir input, and states where the gate lives -
the analyzer has no --fail-on, scripts/ci/run_code_analysis.py implements it,
so a pipeline calling the binary directly must apply its own policy.
- Analyzer Modules Architecture: documents the shared traversal layer
(InstructionSubscriber, IRFactCollector, PerFunctionInstructionCache,
DerivedModuleArtifacts, AnalysisArtifactStore, HotspotProfiler) and the
updated data flow.
- Architecture Overview: module map completed with the ten newer analyses and
the ownership/ and smt/ subdirectories.
- Test Infrastructure: the test directories added since, the ownership unit
suites, and the full workflow list.
- Adding a New Check: emission through DiagnosticBuilder rather than raw struct
assignment, how to choose a CWE and when to omit one deliberately, and not to
add another IR walk.
- Filtering and Configuration: the --config key=value file and its precedence,
--print-effective-config, and the defaults that were missing.
- Getting Started: the build script options that were missing, and how to read
a report that contains AnalysisIncomplete or an unknown stack.
- Troubleshooting: the new performance and precision levers, and that
AnalysisIncomplete is a gap to close, not a clean result.
- Code Style: notes that .clang-format's Standard: c++17 is a parsing hint, not
the language the project builds as.
Analysis Profiles and _Sidebar were checked and are accurate as they stand.
c591b7d
docs(wiki): cover the new rule families, SMT refinement and SARIF CWE tagging
Since February the analyzer gained ten rule families, an SMT layer and a
reworked SARIF emission; the wiki documented none of them.
- Diagnostic Rule Catalog rewritten from DiagnosticEmitter.cpp: every ruleId
with its severity and its CWE, grouped by family, including the rules that
deliberately carry no CWE
- Analysis Categories: recursion, integer handling, out-of-bounds reads, null
dereference, type confusion, TOCTOU, command injection, global
read-before-write and uninitialized-bytes exposure
- the AnalysisIncomplete rules documented as what they are: the analysis
reporting it could not conclude, Info and no CWE, so a clean report that
contains them means nothing was proven rather than nothing is wrong
- same for unresolved calls making max stack unknown, and
--assume-external-frame as the way to charge a budget instead
- SARIF: one rules entry per rule, CWE tags collected across the run,
security-severity as the highest CWE of the rule, per-diagnostic file paths,
1-based clamping
- CLI: SMT options and modes, --config/--print-effective-config, --sarif-out,
--buffer-model, --demangle, IR compile cache, --jobs=auto
- pipeline: SMT refinement stage, MemorySSA-backed reaching definitions, shared
traversals and artifacts, flow-sensitive resource ownership engine
- build: ENABLE_Z3_BACKEND and the other current CMake options
69bb1e5
docs(output-formats): clarify warnings-only modifier behavior
2ed083c
docs(filtering): document warnings-only function omission in human output
00f3b1b
docs(cli-reference): clarify warnings-only function listing behavior
610cea1
docs(wiki): sync external wiki with updated architecture, CLI, and diagnostic rule documentation
de22ff2