···
2
+
synopsis: "Platform dedicated to the analysis of source code written in C"
4
+
Frama-C gathers several analysis techniques in a single collaborative
5
+
framework, based on analyzers (called "plug-ins") that can build upon the
6
+
results computed by other analyzers in the framework.
7
+
Thanks to this approach, Frama-C provides sophisticated tools, including:
8
+
- an analyzer based on abstract interpretation (Eva plug-in);
9
+
- a program proof framework based on weakest precondition calculus (WP plug-in);
10
+
- a program slicer (Slicing plug-in);
11
+
- a tool for verification of temporal (LTL) properties (Aoraï plug-in);
12
+
- a runtime verification tool (E-ACSL plug-in);
13
+
- several tools for code base exploration and dependency analysis
14
+
(plug-ins From, Impact, Metrics, Occurrence, Scope, etc.).
15
+
These plug-ins communicate between each other via the Frama-C API
16
+
and via ACSL (ANSI/ISO C Specification Language) properties.
18
+
maintainer: "francois.bobot@cea.fr"
29
+
"Quentin Bouillaguet"
37
+
"Jean-Christophe Filliâtre"
42
+
"Jean-Christophe Léchenet"
49
+
"Fonenantsoa Maurica"
63
+
"Kostyantyn Vorobyov"
66
+
homepage: "https://frama-c.com/"
67
+
license: "LGPL-2.1-only"
68
+
dev-repo: "git+https://git.frama-c.com/pub/frama-c.git"
69
+
doc: "http://frama-c.com/download/user-manual-25.0-Manganese.pdf"
70
+
bug-reports: "https://git.frama-c.com/pub/frama-c/issues"
73
+
"program verification"
74
+
"formal specification"
75
+
"automated theorem prover"
76
+
"interactive theorem prover"
79
+
"abstract interpretation"
81
+
"weakest precondition"
84
+
"runtime verification"
89
+
["./configure" "--prefix" prefix
93
+
[make "-C" "doc" "download"] {with-doc}
98
+
[make "-C" "doc" "install"] {with-doc}
102
+
[make "-j%{jobs}%" "PTESTS_OPTS=-error-code" "tests"] { arch != "ppc64" & arch != "x86_32" & arch != "arm32" }
103
+
# tests are disabled on PPC64 due to floating-point oracle differences
104
+
# (some ULPs in libc trigonometric functions) and due to the lack of
105
+
# available hardware to test them locally
108
+
# Please keep depends and depopts sorted by package name
110
+
"conf-autoconf" { build }
111
+
( ( "lablgtk" { >= "2.18.8" } & "conf-gnomecanvas" & "conf-gtksourceview"
112
+
& ("ocamlgraph" { < "2.0" } | "ocamlgraph_gtk" ))
113
+
| ( "lablgtk3" { >= "3.1.0" & os!="macos" }
114
+
& "lablgtk3-sourceview3" & "conf-gtksourceview3" ) )
115
+
( "alt-ergo-free" | "alt-ergo" )
116
+
"conf-graphviz" { post }
117
+
"conf-time" { with-test }
118
+
"ocaml" { >= "4.08.1" }
119
+
"ocamlfind" # needed beyond build stage, used by -load-module
120
+
"ocamlgraph" { >= "1.8.8" }
122
+
"ppx_deriving_yojson"
123
+
"ppx_import" {>= "1.8.0"}
124
+
"why3" { >= "1.5.0" }
125
+
"yojson" {>= "1.6.0" & ( < "2.0.0" | ! with-test) }
126
+
"zarith" {>= "1.5"}
131
+
"cairo2" { < "0.6.2" }
135
+
# cannot use {build}: Frama-C must be recompiled when Coq and libraries
137
+
# Coq: because .vo would would not be loadable by another version of Coq
138
+
# libraries: because we use dynamic linking
145
+
x-ci-accept-failures: [
147
+
"centos-7" # Too old version of make
151
+
"Why3 provers setup: rm -f ~/.why3.conf ; why3 config detect"
155
+
src: "https://www.frama-c.com/download/frama-c-25.0-Manganese.tar.gz"
156
+
checksum: "sha256=222dcefcd272053540bf5b6cff369efc47b81c28f360eb616669c3f30a8bc29f"