break
and goto
control flows, as well as for conditional returns.if (x >> 5 >= y)
.__ASTREE_wrapper
call directive. It emulates a function call with arbitrary,
full range, initialized arguments.__ASTREE_print
and __ASTREE_alarm
can now report value ranges of simple variables as part of the printed string.
For example, the following two directives
__ASTREE_print(("Hello x: %0", x)); __ASTREE_alarm((raise_here; user_defined; "Bad value: %0", x));trigger this output of the analyzer:
Hello x: [4, 10] at ...
ALARM (C): Bad value: [4, 10] at ...
print-float-digits
.separate-function
option is set and the called functions
are analyzed context-insensitively.ptr
instead of *ptr
:
int* ptr; int val = *ptr;
clock
option.__ASTREE_modify
directive
is now evaluated left-to-right, instead of right-to-left. Please note
that this may change the semantics of such directives in certain cases.
Example:
__ASTREE_modify((arr[i], i; [5,5]));
separate-function
and separate-with-caller-stack-pointers
,
and that call separately analyzed functions in analysis contexts affected
by state machine partitioning. Such calls are now fully analyzed,
instead of stopping the analysis for this trace with the alarm “call never returns”.warn-on-tainted-control-flow
cut-write-to-const
__ASTREE_print(("msg";check));
with
__ASTREE_alarm((raise_here; user_defined; "msg"));
__ASTREE_partition_control
and __ASTREE_max_clock
now accept constant integer expressions as arguments.__ASTREE_unroll(())
without argument__ASTREE_partition_ranges((... : [ ... ; ... ] ...));
__ASTREE_known_range((... , [ ... ; ... ]));
asm {...}
.
Tokens between the braces are ignored and a diagnostic about violation
of rule A.2.2 is issued.<clibrary/>
is absent from a DAX file.strncpy(dst, src, n);
now reads at most n
chars from src
.fmin,
fminf,
fminl,
fmax,
fmaxf,
fmaxl,
rand,
srand
.NaN
and +
/−∞
inputs and return values,
to enable proper use of stubs in conjunction with the analyzer option keep-float-specials=yes
acos
, acosf
, acosh
, acoshf
,
asin
, asinf
, atan
, atanf
, atan2
, atan2f
,
cos
, cosf
, cosh
, coshf
, ilogb
, ilogbf
,
modf
, modff
, pow
, powf
,
sin
, sinf
, sqrt
, sqrtf
,
tan
, tanf
,
ceil
, ceilf
,
erf
, erff
, erfc
, erfcf
,
fabs
, fabsf
, floor
, floorf
,
fmod
, fmodf
, ldexp
, ldexpf
,
remainder
, remainderf
, rint
, rintf
,
exp
, expf
, exp2
, exp2f
,
expm1
, expm1f
, frexp
, frexpf
,
hypot
, hypotf
,
cbrt
, cbrtf
, logb
, logbf
,
nextafter
, nextafterf
.nextafter(f)
and remainder(f)
.ceil
, ceilf
,
erf
, erff
, erfc
, erfcf
,
fabs
, fabsf
, floor
, floorf
,
fmod
, fmodf
, ldexp
, ldexpf
,
remainder
, remainderf
, rint
, rintf
,
cbrt
, cbrtf
, logb
, logbf
,
nextafter
, nextafterf
.exp
, expf
, exp2
, exp2f
,
expm1
, expm1f
, frexp
, frexpf
,
hypot
, hypotf
,
cbrt
, cbrtf
, logb
, logbf
,
nextafter
, nextafterf
.The generated stubs for AUTOSAR now also handle
calls to CallNonTrustedFunction
(for MicroSAR ARXML files).
<option/>
and <abi_option/>
tags
have been extended by a new attribute is_default="0/1"
.<location/>
tags in XML report files now contain additional o_start_col
and o_end_col
attributes if the location information
refers to an original source file only. The values found in the
o_file
, o_start_line
, o_start_col
,
o_end_line
, o_end_col attributes
are then identical
to those in the p_file
, p_start_line
, p_start_col
,
p_end_line
, p_end_col attributes
.
Location tags of this kind are referenced by RuleChecker alarms
that are detected directly on the original source code.<abi_option/>
tag.
The optional attribute is added if the tool detects that frontend and analyzer have been executed
with different ABI settings.__ASTREE_wrapper_call
.--detach
--report-only
--id
and --revision
.The tool installation now provides a plugin for integrating
RuleChecker with the ARM Keil µVision IDE/Debugger.
A free video tutorial
on installing and using the plugin is available on our YouTube channel.
static-assert
check failures (diagnostic rule A.1.6).pointer-arithmetic-void
(rule A.2.18)
to unary assignment operators ++
and --
.max-number-of-recursive-paths
are no longer reported at an (arbitrarily chosen) code location.min-comment-density-his
now always include the metric value.#define DEF(...) defined(...)
, ##__VA_ARGS__the comma is erased if no variadic arguments are provided.
bitfield-signed-size
no longer produces false alarms
if the ABI option bitfield_sign
is set to unsigned.constant-expression-extended-pp
(rule A.2.4)
warns about non-standard constant integer expressions in preprocessor directives.non-standard-escape-sequence-pp
(rule A.2.11)
warns about non-standard escape sequences in character literals in preprocessor directives.inconsistent-default-argument
.loose-asm
now also warns about
assembler code in lambda expressions.null-as-integer
(rules M2008.4.10.1
and AUTOSAR.4.10.1M) now supports arbitrary definitions of the NULL macro.polymorphic-downcast
fails (violation of rule M2008.5.2.3).include-guard-missing
,
include-position
, define-in-block
,
error-directive
, and non-directive
to remove false alarms in comment blocks starting with //*
.//*
.undefined-extern
no longer warns about
undefined pure virtual functions. These are now covered by the new check
undefined-extern-pure-virtual
.Added support for the following AUTOSAR rules:
Added support for rule M2008.5.0.10.
_Pragma
preprocessing operator in C.clang-warning
.identifier-unique-*
or identifier-significance
.Updated the TargetLink integration to use the new directive __ASTREE_wrapper_call
.
<clibrary/>
from no
to yes
.<!-- DAX version <= 1.8 --> <substitute-functions>a=b,c=d</substitute-functions> <separate-function>f,g<separate-function> <!-- DAX version >= 1.9 --> <substitute-functions> <item key="a">b</item> <item key="c">d</item> </substitute-functions> <separate-function> <item>f</item> <item>g</item> </separate-function>
__RULECHECKER_comment((...));
and __RULECHECKER_suppress((...));
as aliases for __ASTREE_comment((...));
and __ASTREE_suppress((...));
, respectively.The test cases qk_option_report_file
,
qk_option_print_float_digits
, and
qk_alarm_unnamed_argument
have been removed from the Astrée QSK.
The test case qk_option_code_line
has been renamed into qk_option_code_lines
.
The test cases qk_option_clibrary
,
qk_option_path
, and
qk_option_report_file
have been removed from the RuleChecker QSK.
Some test cases have been renamed for improved consistency:
The test cases qk_abi_alignof_attributed_pointers
,
qk_abi_pointer_attributes
, and
qk_abi_sizeof_pointer_attributes
have each been split
into three separate test cases for each individual ABI setting.
The following is the complete list of all test cases for ABI settings that are now new as a result: