Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file options.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205(**************************************************************************)(* *)(* This file is part of the Frama-C's Luncov plug-in. *)(* *)(* Copyright (C) 2012-2022 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file LICENSE) *)(* *)(**************************************************************************)let()=Plugin.is_share_visible()includePlugin.Register(structletname="luncov"letshortname="luncov"lethelp="Uncoverable label detection"end)moduleEnabled=False(structletoption_name="-luncov"lethelp="enable uncoverable label detection (disabled by default)"end)letinits=add_group"Label data initialization"let()=Parameter_customize.set_groupinitsmoduleInit=False(structletoption_name="-luncov-init"lethelp="(re-)initialize label data from source file"end)let()=Init.add_set_hook(fun_oldb->ifbthenEnabled.on())let()=Parameter_customize.set_groupinitsmoduleForceInit=False(structletoption_name="-luncov-force-init"lethelp="initialize label data from source file \
(clearing any previous data first)"end)let()=ForceInit.add_set_hook(fun_oldb->ifbthenEnabled.on())letmethods=add_group"Detection methods"let()=Parameter_customize.set_groupmethodsmoduleWP=False(structletoption_name="-luncov-wp"lethelp="enable weakest precondition-based detection \
(disabled by default, implies -luncov)"end)let()=WP.add_set_hook(fun_oldb->ifbthenEnabled.on())let()=Parameter_customize.set_groupmethodsmoduleEVA=False(structletoption_name="-luncov-eva"lethelp="enable EVA-based detection \
(enabled by default, implies -luncov)"end)let()=EVA.add_aliases["-luncov-value"]let()=EVA.add_set_hook(fun_oldb->ifbthenEnabled.on())let()=Parameter_customize.set_groupmethodsmoduleVWAP=False(structletoption_name="-luncov-vwap"lethelp="enable EVA + WP computation \
(disabled by default, implies -luncov)"end)let()=VWAP.add_set_hook(fun_oldb->ifbthenEnabled.on())let()=Parameter_customize.set_groupmethodsmoduleAlwaysTrue=False(structletoption_name="-luncov-always-true"lethelp="enable WP to detect always true labels \
(disabled by default, implies -luncov)"end)let()=AlwaysTrue.add_aliases["-luncov-at"]let()=AlwaysTrue.add_set_hook(fun_oldb->ifbthenEnabled.on())letgeneral=add_group"General options"let()=Parameter_customize.set_groupgeneralmoduleForce=False(structletoption_name="-luncov-force"lethelp="force the computation for all labels, \
including those marked covered or uncoverable \
(disabled by default)"end)let()=Parameter_customize.set_groupgeneralmoduleTime=True(structletoption_name="-luncov-show-time"lethelp="Display execution time at the end (enabled by default)"end)let()=Parameter_customize.set_groupgeneralmoduleWPQedOptim=True(structletoption_name="-luncov-wp-qed-optim"lethelp="enable formula optimizations in QED during WP call \
(enabled by default)"end)let()=Parameter_customize.set_groupgeneralmoduleWPShowLogs=True(structletoption_name="-luncov-wp-show-logs"lethelp="prints the logs generated by WP and the called solvers \
(enabled by default)"end)let()=Parameter_customize.set_groupgeneralmoduleRte=False(structletoption_name="-luncov-rte"lethelp="add runtime error annotations for WP-based detection \
(disabled by default), \
see -rte-help for RTE generation parameters"end)let()=Parameter_customize.set_groupgeneralmoduleLabelsFile=String(structletdefault=""letoption_name="-luncov-labels"letarg_name="f"lethelp="set the filename of the label data \
(by default <input file>.labels)"end)let()=Parameter_customize.set_groupgeneralmoduleHyperlabelsFile=String(structletdefault=""letoption_name="-luncov-hyperlabels"letarg_name="f"lethelp="set the filename of the hyperlabel data \
(by default <input file>.hyperlabels)"end)let()=Parameter_customize.set_groupgeneralmoduleWPMaxNbLabelPerCall=Int(structletoption_name="-luncov-wp-max-labels-per-call"letarg_name="n"letdefault=0lethelp="set the maximal number of labels per call to WP (useful to prevent memory overflow) \
(0 by default, i.e. automatic management)"end)let()=Parameter_customize.set_groupgeneralmoduleMulticore=Int(structletoption_name="-luncov-multicore"letarg_name="n"letdefault=1lethelp="set the number of processes used for parallel WP-based detection \
(1 by default, no parallelism)"end)let()=Parameter_customize.set_groupgeneralmoduleMultiCoreMaxMemory=Int(structletoption_name="-luncov-multicore-max-memory"letarg_name="t"letdefault=1000000lethelp="set the maximal redident memory usage (in kB) allowed for each complete WP run (run is aborded if it overflows). \
(1GB by default)"end)let()=Parameter_customize.set_groupgeneralmoduleTimeout=Int(structletoption_name="-luncov-timeout"letarg_name="t"letdefault=10800lethelp="set the timeout (in seconds) for WP complete analysis. \
(10800s (3h) by default)"end)let()=Parameter_customize.set_groupgeneralmoduleMultiCoreKillTimeout=Int(structletoption_name="-luncov-multicore-kill-timeout"letarg_name="t"letdefault=10lethelp="set the timeout (in seconds) for each complete WP run. \
(10s by default)"end)let()=Parameter_customize.set_groupgeneralletstrat_str=["none";"all";"param";"function";"label";"label+param"]moduleStrategy=String(structletdefault="label"letoption_name="-luncov-strategy"letarg_name="strategy"lethelp="set the strategy to use for annotating code ("^(List.fold_left(funacce->acc^","^e)""strat_str)^")"end)let()=Strategy.set_possible_valuesstrat_strlet()=Parameter_customize.set_groupgeneralmoduleBackup=False(structletoption_name="-luncov-backup"lethelp="Backup the .labels file before writting the new one (default : false)."end)