Clang LibTooling + Z3 BV-64 encoding. 11 detectors: clone, equiv, class-dup, dead, null-deref, div-by-zero, int-overflow, oob, int-truncation, sign-conversion, taint-track. Interfaces: CLI, MCP (JSON-RPC 2.0), LSP. Output: SARIF 2.1.0, JSON, Markdown.
1.2 KiB
1.2 KiB
Frontier
Optimizations and validations grounded in cited literature. Ordered by tier.
Tier 0 — Done
int-truncationdetector (CWE-197)sign-conversiondetector (CWE-195)
Tier 1 — Done
- Unsat core minimization path pruning (solver.unsat_core())
- Completeness class measurement (100% recall on CWE-369 complete class)
- Bail-out precision catalog harness
Tier 2 — Done
- Expression canonicalization cross-function Z3 cache (ExprCache)
- Stdlib buffer overflow (onBufferCopy, BufferSizeTracker)
- SV-COMP witness generation (GraphML, --witness)
- Bounded soundness proof (soundness.md)
- VC equivalence with CBMC script
Tier 3 — Done
- Parallel Z3 tactic portfolio (--portfolio, checkWithPortfolio)
- Concrete library call evaluation (strlen, abs)
- Selective state merging (live-variable heuristic, 30-50% path reduction)
Tier 4 — Done
- Taint tracking (taint-track detector, sources→sinks)
- Loop invariant API surface (Z3 fixedpoint PDR, research prototype)
Future research
- Full interprocedural fixpoint summaries (beyond leaf functions)
- Heap alias disambiguation (past-sensitive pointer analysis)
- ML-assisted finding prioritization
- Detector DSL (Formulog-style Datalog+SMT)