<comment-patterns/>
,
rather than under <annotations/>
as before.<annotations reference="<file>"/>
can be used to specify an AAL insertion reference file from a previous analysis run.partition-array-access
)exclude-signed-in-unsigned-overflows
is enabled).taint-control-flow-context
is now enabled by default.equality=yes
).substitute-functions
and dump-hypotheses
are now also available for C++ (astree-cxx
analysis mode).warn-on-enum-overflows
to control alarms
about enum values that do not correspond to actual enumerators of their type.warn-on-integer-arith-ranges
by warn-on-unsigned-integer-arith-ranges
which
only controls the alarms for unsigned arithmetic overflows (predictable result),
while signed overflows (undefined behavior) now always trigger a warning.modular-signed-integers
by the new option keep-signed-integers
.
With default settings, the behavior of the analyzer is unchanged.
When the new option is set to no
, Astrée tries
to remove overflow values after reporting an
arithmetic_overflow_unpredictable
alarm, in order to improve precision.clamp-enum
and modular-unsigned-integers
.__ASTREE_known_ranges
directive for C++.__ASTREE_modify
, __ASTREE_initialize
, and
__ASTREE_check_separate_targets
with expression access
path with array slices. For example, __ASTREE_modify((arr[0:8]));
is now accepted.__ASTREE_initialize
,
as well as the initialization of arguments of functions called via
__ASTREE_wrapper_call
,
to fail with error when the type of the argument was a struct with bitfield members.__ASTREE_access
or
__ASTREE_trash
with size 0
.annotation_insertion_failed
diagnostics when trying to insert certain directives
(e.g. __ASTREE_unroll
or __ASTREE_partition_control
)
into a block using AAL, but without specifying the position before a particular
statement within that block (as in { +1 loop {}} insert : <directive>
).__ASTREE_partition_begin.
__ASTREE_alarm
now enforces using
an alarm key of class A when adding the stop
argument.
To this end, the alarm key user_defined
has changed
from class C to class A. Moreover, the alarm keys
read_write_data_race
and write_write_data_race
are now rejected in all uses of the directive.__ASTREE_modify
and __ASTREE_known_range
when targeting expressions
that involve array accesses in which the index is expressed by a variable.track-taint-hues
expresses an optional restriction of the set of legal taint hues.taint-control-flow-context
is enabled by default.__ASTREE_taint_add
,
__ASTREE_taint_add_if
,
__ASTREE_taint_remove
, and
__ASTREE_taint_alarm
.__ASTREE_taint
has been removed,
and is now expressed as an __ASTREE_taint_remove
followed by an __ASTREE_taint_add
.__ASTREE_modify
or __ASTREE_volatile_input
).track-taint-hues
, warn-on-tainted-control-flow
,
as well as the tainting directives are now also supported in astree-cxx
mode.Further information can be found in the user manual.
Added support for TargetLink 23.1.
#line
directives in original source files. When rerunning
an analysis in-place on the server, rule violations in such files were
no longer displayed if the files did not change since the previous analysis run.__ASTREE_suppress
directive.%s
in __ASTREE_alarm(())
or __ASTREE_print(())
.invalid_usage_of_concurrency_intrinsic
)
when a process tries to start another process that cannot run during the current phase or later.arithmetic_overflow_unpredictable
(rather than as arithmetic_overflow
).shift_argument
alarms (second shift argument not in range)
are now reported as class A alarms.substitute-functions
)
that has no definition even when auto-generate-stubs
is set to no
.filter-asm-function
or filter-pragma-inline-asm
are now replaced by stubs when auto-generate-stubs
is enabled (which is the default setting).mod=yes
) that caused analyses to not terminate
in acceptable time or to run out of memory.If you are upgrading your client from a release older than 23.10, you will need to upgrade your License Manager as well. This is due to the new TLS-encrypted connection between the client and the License Manager that was first introduced in release 23.10.
text-report-tables
:
rule_violations
produces a tabular overview
of violated rules including the overall number of violations per rule.ERROR other: Ignoring unknown rule key ... in rule check configuration
no-declarator-in-struct
) warns about struct/union member
declarations which do not have a declarator (constraint violation).Support for the new MISRA C++:2023 rule set.
ignored-partitioning
(rule B.1.5)
now reports when an
__ASTREE_partition_merge_last(())
directive doesn’t have
any partition to merge.astree-reserved-name
(A.CPP.5.2)
warns about usage of names that are used internally by Astrée.max-number-of-paths
(T.9.1).__ASTREE_assert(())
,
__ASTREE_known_fact
, and
__ASTREE_known_range
no longer influence rule checks about side effects.
This removes false positives for the checks:
evaluation-order
(M2023-C.13.2, M2023-C.1.3,
M2012.13.2, M2012.1.3,
M.12.2, CERT.EXP.30,
CERT.EXP.10, A.4.1),
statement-sideeffect
(M.14.2, CERT.MSC.12), and
expression-statement-pure
(M2023-C.2.2, M2012.2.2,
CWE.561).struct-pointer-not-opaque
(M2012.D.4.8, M2023-C.D.4.8)
no longer erroneously reports struct types used as array element type,
function return type, as type-name in a generic association, or as the operand
of certain sizeof expressions.ambiguous-identifiers
and
type-file-spreading
to avoid redundant reporting of global identifiers.inherited-member-function-hidden
(AUTOSAR.10.2.1A) no longer reports functions as hidden
that are brought into scope of the derived class by a using
directive.
Moreover, copy and move assignment operators in the base class
are no longer reported as hidden.non-dynamic-virtual-downcast
(AUTOSAR.5.2.2M, M2008.5.2.2).
Invalid reinterpret_casts
are now also reported.global-asm-declaration
removes false negatives for the rule AUTOSAR.7.4.1A.throwing-empty-outside-catch
(M2008.15.1.3, AUTOSAR.15.1.3M)
now warns about empty throws in the body of a lambda declared within a catch block.
This interpretation now follows the clarified wording of the successor ruleset
M2023-CPP.non-pod-struct
(AUTOSAR.11.0.1A)
are now reported at definitions only and no longer repeated at each declaration.stdlib-limits
(AUTOSAR.0.4.4A) now uses Astrée
analysis results, when available (mode astree-cxx
).client_auth_method
that configures how to send the client_id
and client_secret
to the OAuth server.--credentials-file
for batch mode execution with OAuth2 authentication.-B
)
and connecting to a server that requires OAuth authentication,
the client now automatically opens the login page in your default Web browser.@taints
).check_failure
alarms originating from failed __ASTREE_check
directives.__ASTREE_volatile_input
and __ASTREE_global_assert
directives with valid interval bounds
to be rejected by the check invalid-directive after parsing them with the C++ frontend.#pragma
directive in the last line of a C file.path
of the <clibrary/>
tag.c-version
and cxx-version
are now rejected already by the preprocessor.filter-pragma-asm
,
filter-asm-preprocessor-directive
, and
filter-pragma-inline-asm
no longer apply
to text that is not a preprocessor directive.IS_START_CORE
in the OSEK stubs.
The previous implementation could result in wrong start-up of some cores for AUTOSAR
projects with fewer applications than cores.__builtin_mulhd()
for CompCert for PowerPC when multiplying a negative number with a positive one.The test case qk_aal_comment_pattern_basic
has been renamed into qk_dax_comment_pattern_basic
.
The test cases qk_directive_taint
,
qk_option_clamp_enum
,
qk_option_modular_unsigned_integers
,
qk_option_modular_signed_integers
, and
qk_option_warn_on_integer_arith_ranges
have been removed.
ID | Short summary for 24.04 | Status in 24.10 |
---|---|---|
2404-00298 | If a process may run in several phases, the analysis may fail to consider some possible values. | fixed |
2404-11360 | Initializers for volatile array elements or volatile struct and union members may be ignored in certain cases. | fixed |
2404-21422 | __ASTREE_partition_ranges may fail to cover all possible
floating-point valueswhen used with several intervals whose integer bounds relate in a specific way. | fixed |
2404-31615 | Upon activating the Interpolation domain, conversion overflow alarms may be missing. | fixed |
2404-44870 | For variables with absolute addresses, misaligned dereferences may not be reported under certain circumstances. | fixed |
2404-55228 | Writing to an array element using a tainted index does not taint the written array elements. | fixed |
2404-65261 | Taints may not be propagated between asynchronous processes when using memcpy or copy assignment. | fixed |
2404-77822 | The Partitioning domain and the State Machine domain may prevent expected effects of control flow tainting. | fixed |
2404-87855 | Taint analysis does not capture interferences due to the status of mutex locks or disabling/enabling all interrupts. | fixed |
If you cannot upgrade to release 24.10 for any reason, please write to support@absint.com with any issue IDs of interest to receive further details, code examples, tell-tale symptoms, and known workarounds.