Freedom251 › C and C++ Static Analysis Tools
Frama-C

What Frama-C is
Frama-C is a free, self-hosted platform of plug-ins for analyzing C programs and checking them against specifications. Its analyzers share a kernel, program representation, and ACSL language, so results can be combined sequentially or in parallel. Eva applies abstract interpretation to identify supported possible runtime errors, including invalid memory access and integer overflow; it analyzes sequential code but not recursive calls. WP checks ACSL contracts across possible executions using weakest-precondition reasoning and external provers or proof assistants. E-ACSL turns executable annotations into C code for runtime checks, although some ACSL constructs cannot be translated. The main distribution includes Eva, WP, E-ACSL, and other analyzers; some specialized plug-ins are separate, proprietary, archived, or have limited support. Frama-C runs on Linux, macOS, and Windows and is available under the LGPL, with dual licensing possible for other uses. The platform is used in teaching, experimental research, and industrial applications, including safety- and security-critical work. Support options include technical support, training, tutorials, hackathons, extensions, customization, and community channels.
Who it suits
Frama-C suits C developers, educators, researchers, and industrial teams working with program analysis or functional verification. Its use in safety- and security-critical applications may also make it relevant to teams handling certification work.
What it does well
- Free and available for Linux, macOS, and Windows.
- Eva reports supported possible runtime errors.
- WP checks ACSL contracts across possible executions.
- Analyzers can combine results sequentially or in parallel.
- Plug-in development can extend or modify analyses.
What to know first
- Eva analyzes sequential code only.
- Eva does not support recursive calls.
- Some ACSL constructs cannot be translated by E-ACSL.
- Some specialized plug-ins are separate or proprietary.
Limits
Eva analyzes only sequential code and does not support recursive calls. E-ACSL cannot translate all ACSL constructs, and some specialized plug-ins are proprietary or separately distributed.
Getting started
- Visit the Frama-C website.
- Choose the Linux, macOS, or Windows platform.
- Use the free software under its LGPL licensing.
- Select analyzers from the main distribution, such as Eva, WP, or E-ACSL.
- Write ACSL annotations when using contract-based specification or runtime checking.
Verdict
Frama-C offers several complementary analysis approaches for C, from runtime-error detection to contract-based proof and runtime checking. Its limitations around recursion, sequential analysis, and annotation translation matter when choosing which plug-ins fit a codebase.
Questions
Is Frama-C free?
Yes. It is available as free software under the LGPL; dual licensing is possible for other uses.
Which operating systems does it support?
Frama-C lists Linux, macOS, and Windows.
What programming language does it analyze?
Its input languages are C and ACSL, the annotation language used for specifications.
What does Eva do?
Eva uses abstract interpretation to report supported possible runtime errors, including invalid memory accesses and integer overflows. It analyzes sequential code and does not support recursive calls.
Which provers can WP use?
WP recommends Alt-Ergo, Coq, Z3, and CVC4, and supports other provers available through Why3.
Who develops Frama-C?
It is co-developed at CEA LIST and the Inria Saclay–Île-de-France Toccata team, in common with LRI-CNRS and Université Paris-Sud 11.
Facts from Frama-C's own pages
- ACSL
- Frama-C uses ACSL annotations to specify function contracts and verify conformance to functional specifications. · frama-c.com, 3 Oct 2026
- Additional analyzers
- The main distribution includes Eva, WP, E-ACSL, and other plug-ins; some specialized plug-ins are proprietary, separately distributed, archived, or have limited support. · frama-c.com, 4 Oct 2026
- Architecture
- Plug-ins share a kernel, program representation, and ACSL specification language, allowing analyzers to combine results sequentially or in parallel. · frama-c.com, 4 Oct 2026
- Audience
- The site describes use in teaching, experimental research, and industrial applications, including safety- and security-critical software. · frama-c.com, 4 Oct 2026
- Eva analysis
- Eva uses abstract interpretation to analyze C programs and report possible runtime errors within the undefined behaviors supported by its analysis. · frama-c.com, 3 Oct 2026
- Eva limits
- Eva currently does not support recursive calls and analyzes only sequential code. · frama-c.com, 3 Oct 2026
- Extensibility
- The platform supports development of plug-ins that add analyses or modify existing ones. · frama-c.com, 4 Oct 2026
- Formal methods
- The platform combines formal-methods-based analyses, most of which the site describes as sound. · frama-c.com, 4 Oct 2026
- Functional verification
- The WP plug-in uses ACSL specifications and weakest-precondition reasoning to prove functional correctness, with SMT solvers and user-provided annotations. · frama-c.com, 4 Oct 2026
- Integrations
- WP uses SMT solvers including Alt-Ergo, CVC5, and Z3. · frama-c.com, 4 Oct 2026
- Intended users
- The site describes Frama-C as used in teaching, experimental research, and industrial applications, including certification work for DO-178, IEC 60880, and Common Criteria EAL 6–7. · frama-c.com, 3 Oct 2026
- Licensing
- Frama-C is available under LGPL and can be dual-licensed for other uses. · frama-c.com, 3 Oct 2026
- Maker
- The platform is co-developed at CEA LIST and the Inria Saclay–Île-de-France Toccata team, in common with LRI-CNRS and Université Paris-Sud 11. · frama-c.com, 3 Oct 2026
- Platforms
- The current download page provides installation instructions for Linux and macOS, and describes Windows use through WSL. · frama-c.com, 4 Oct 2026
- Plugin ecosystem
- The plugin catalog lists Eva, WP, E-ACSL, and other analyzers in the main distribution, alongside separately distributed and proprietary plugins. · frama-c.com, 3 Oct 2026
- Purpose
- Frama-C is a framework for modular analysis of C programs using collaborative program analysis plug-ins. · frama-c.com, 4 Oct 2026
- Runtime checking
- E-ACSL translates executable ACSL annotations into C code for runtime checking, but only supports an executable subset of ACSL. · frama-c.com, 4 Oct 2026
- Runtime errors
- The Eva plug-in uses abstract interpretation to analyze possible program behaviors and report supported undefined behaviors, including invalid memory accesses and integer overflows. · frama-c.com, 4 Oct 2026
- Security use
- The site says Frama-C has been used for certification purposes including DO-178, IEC 60880, and Common Criteria EAL 6-7. · frama-c.com, 4 Oct 2026
- Support
- The project offers technical support, training, tutorial sessions, hackathons, extensions, and customization for commercial or industrial use. · frama-c.com, 4 Oct 2026
- WP integrations
- WP recommends Alt-Ergo, Coq, Z3, and CVC4, and supports other provers available through Why3. · frama-c.com, 3 Oct 2026
- WP proofs
- WP checks whether ACSL contracts hold for all possible executions using weakest-precondition calculus and external provers or proof assistants. · frama-c.com, 3 Oct 2026
Where Frama-C stands on Freedom251
- C and C++ Static Analysis Tools#10 of 25
- Formal Verification Tools#21 of 34