Analytical Pipeline
The implemented static-analysis path processes a single translation unit through deterministic stages. The experimental optimization path extends this with native profiling, model-assisted candidate generation, and independent A/B measurement.
Solid borders indicate implemented deterministic stages. Dashed borders indicate the experimental opt-in optimization path, which requires explicit trust configuration and is not part of the default static analysis.
What Precedes Actually Does
Precedes is a local command-line static C/C++ performance analyzer. It processes source code locally without uploading it, executing user binaries, or running build systems. The current implementation comprises over 130 Python modules, 49 rule implementations, and 6 native C++ helpers built against Clang/LLVM 21.
Clang AST-Based Recognition
Conservative source rules over Clang JSON ASTs identify loop structures, allocation patterns, vector-reserve opportunities, and STL usage patterns. Diagnostics use the PCPP-* namespace.
CFG and Control-Flow Reasoning
Bounded abstract interpretation over Clang 21 CFGs computes reaching values and loop-region invariance proofs. Budget-enforced traversal (20,000 steps, 250,000 cells) ensures termination on arbitrary inputs.
Interprocedural Effect Propagation
Source-visible may-effects of calls are computed over the resolved call graph. A reverse worklist reaches a finite fixed point including strongly connected components. Volatile, atomic, assembly, indirect-memory, and unresolved calls are tracked as explicit unknowns, never assumed pure.
Indirect-Call Resolution
Callee identity is resolved through declaration references, const pointer/reference bindings traced to initializers, member expressions, function-to-pointer decay, and bounded recursion through stable bindings. Virtual dispatch is tracked as explicit uncertainty.
C++ Lifetime Semantics
Native Clang LibTooling helpers extract constructor, destructor, temporary-object, and construction-failure cleanup paths from the CFG. Allocation/deallocation identity, exception handler regions, and subobject/base/virtual-base cleanup are tracked.
Loop Analysis
49 rules cover loop interchange, tiling, fission, scalar and sparse reductions (parallel, SIMD, offload, promotion), stride analysis, induction-variable proofs, pointer recurrence, iterator conditions, invariant-condition hoisting, and data-dependent conditions.
Native CLI
The standalone executable provides precedes check, precedes screening, and precedes doctor. Output is available as structured JSON or human-readable text. Exit code 0 means no actionable findings; exit code 1 means actionable findings were reported.
Data from repository revision 12c507e3f4136093139c8b004233b6001ed6963e, November 4, 2026. 73 applicable C/C++ Codee Open Catalog checks. These are detection-contract statuses, not percentages of proprietary Codee product capability. Precedes is an independent project, not affiliated with or endorsed by Codee.
Precedes