From 7eb472b7e5f5093387802012a26a68aeeb309e3c Mon Sep 17 00:00:00 2001 From: Julien Signoles <julien.signoles@cea.fr> Date: Tue, 18 Sep 2018 17:56:35 +0200 Subject: [PATCH] [userman] improve intro --- src/plugins/e-acsl/doc/userman/biblio.bib | 20 +++++++++++++ .../e-acsl/doc/userman/introduction.tex | 30 +++++++++++-------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/plugins/e-acsl/doc/userman/biblio.bib b/src/plugins/e-acsl/doc/userman/biblio.bib index 3a444b97790..3b4015a6d13 100644 --- a/src/plugins/e-acsl/doc/userman/biblio.bib +++ b/src/plugins/e-acsl/doc/userman/biblio.bib @@ -49,6 +49,26 @@ note = {\mbox{\url{http://frama-c.com/download/e-acsl/e-acsl-implementation.pdf}}} } +@habilitation{signoles18hdr, + author = {Signoles, Julien}, + title = {{From Static Analysis to Runtime Verification with Frama-C and E-ACSL}}, + year = 2018, + month = jul, + school = {Universit\'e Paris-Sud, Orsay, France}, + note = {Habilitation Thesis}, + url = {publis/hdr.pdf} +} + +@inproceedings{rvcubes17tool, + author = {Julien Signoles and Nikolai Kosmatov and Kostyantyn Vorobyov}, + title = {{E-ACSL, a Runtime Verification Tool for Safety and Security of C +Programs. Tool Paper}}, + booktitle = {International Workshop on Competitions, Usability, Benchmarks, +Evaluation, and Standardisation for Runtime Verification Tools (RV-CuBES)}, + year = 2017, + month = sep, +} + @inproceedings{sac13, author = {Micka\"{e}l Delahaye and Nikolai Kosmatov and Julien Signoles}, title = {Common Specification Language for Static and Dynamic Analysis of diff --git a/src/plugins/e-acsl/doc/userman/introduction.tex b/src/plugins/e-acsl/doc/userman/introduction.tex index 03e8b405449..0a891902150 100644 --- a/src/plugins/e-acsl/doc/userman/introduction.tex +++ b/src/plugins/e-acsl/doc/userman/introduction.tex @@ -14,22 +14,28 @@ program. \C code and perform what is usually referred to as ``runtime assertion checking''~\cite{runtime-assertion-checking}\footnote{In our context, ``runtime annotation checking'' would be more precise.}. This is the primary goal of -\eacsl. Indirectly, in combination with the \rte~\cite{rte}, this usage -allows the user to detect undefined behaviors in its \C code. Second, it allows -to combine \framac and its existing analyzers with other \C analyzers that do -not natively understand the \acsl specification language. Third, the possibility -to detect invalid annotations during a concrete execution may be very helpful -while writing a correct specification of a given program, \emph{e.g.} for later -program proving. Finally, an executable specification makes it possible to -check assertions that cannot be verified statically and thus to establish a link -between runtime monitoring and static analysis tools such as -\Eva~\cite{eva}\index{Eva} or \wpplugin~\cite{wp}\index{Wp}. +\eacsl. Indirectly, in combination with plug-in \rte~\cite{rte} of \framac, this +usage allows the user to detect undefined behaviors in its \C code. Second, it +allows to combine \framac and its existing analyzers with other \C analyzers +that do not natively understand the \acsl specification language. Third, the +possibility to detect invalid annotations during a concrete execution may be +very helpful while writing a correct specification of a given program, +\emph{e.g.} for later program proving. Finally, an executable specification +makes it possible to check assertions that cannot be verified statically and +thus to establish a link between runtime monitoring and static analysis tools +such as \Eva~\cite{eva}\index{Eva} or \wpplugin~\cite{wp}\index{Wp}. Annotations used by the plug-in must be written in the \eacsl specification language~\cite{eacsl,sac13} -- a subset of \acsl. \eacsl plug-in is still in a preliminary state: some parts of the \eacsl specification language are not yet -supported. Annotation supported by the plugin are described in a separate -document~\cite{eacsl-implem}. +supported. Annotations supported by the plugin are described in a separate +document~\cite{eacsl-implem}. It is worth noting that the annotations that aim +to be dynamically verified are not necessarily hand-written, but may be +automatically generated instead. That is for instance the case when checking the +absence of undefined behaviors in combination with RTE, as mentionned in the +previous paragraph. Using \eacsl this way is therefore a fully automatic +process. Many usages, including automatic usages, are described in companion +research papers~\cite{rv13tutorial,rvcubes17tool,signoles18hdr}. This manual does \emph{not} explain how to install the \eacsl plug-in. For installation instructions please refer to the \texttt{INSTALL} file in the -- GitLab