RuleChecker can now analyze C++ code. This release introduces support for a majority of MISRA C++:2008 rules.
RuleChecker and Astrée now support floating licenses in addition to node-locked licenses. Any existing node-locked license can be upgraded to floating if desired. Contact support@absint.com with any questions.
On request and for an additional fee, RuleChecker is now also available for macOS High Sierra 10.13 or newer.
The ABI now allows to configure the following types:
size_t
ptrdiff_t
wchar_t
wint_t
char16_t
char32_t
intptr_t
intmax_t
sig_atomic_t
max_atomic_width
for specifying
the maximum width lock-free atomic operation supported by the target...
”
are now normalized in batch mode execution as well. This does away with error messages
of the form
Unknown file in RuleChecker configuration: /a/path/with/../in/it.c
For all operating systems, the portable version now comes as a ZIP file.
The top-level directory within is named like the file itself, including the build number,
with the .app
suffix added on macOS. This prevents different builds from
overwriting each another upon unzip.
Under Linux, the ZIP file also contains the install script, should you later decide to install the software rather than running it from the unzipped directory.
#if
directive no longer trigger error messages.#include
directives when rule checking.struct-type-incomplete
now also reports non-compliant anonymous struct types,
and no longer issues alarms for opaque pointers to structs/unions:
struct ST *p; // Compliant even if no definition for ST is given
function-pointer-integer-cast
when analyzing expressions involving null pointer constants.auto-generate-stubs=no
.This is the first stable release of RuleChecker to support checking C++ code for compliance with MISRA C++:2008 rules.
multiple-volatile-accesses
and logop-side-effect
, and the respective rules
M.12.2, M2012.13.2, and M.12.4.
#pragma
.include-characters
has been split into the two checks
include-characters
and include-characters-backslash
.non-standard-keyword
are now also reported for the keywords typeof
,
__asm
, __asm__
, and __alignof__
.
This affects rule M2012.1.2 and M.1.1.statement-sideeffect
and expression-statement-dead
now warn about statements containing the ?:
operator if at least one branch
has no side effect. This affects rule M.14.2 and M2012.2.2.define-in-block
to function bodies.type-compatibility
(rule M.8.4)
now uses the unqualified types of function parameters when checking for type compatibility.identifier-hidden
now warns about hidden tags.
This affects rule M.5.2.octal-constant
(M.7.1, M2012.7.1)octal-escape-sequence
(M.7.1)other-escape-sequence
(M.4.1)bitop-type
now also checks the sign of the right-hand side of shift operators
(<<
, >>
, <<=
, >>=
).
Furthermore, it now considers signed integer constants of positive value
as underlying signed and reports rule violations in such cases. This affects rule M.12.7.const struct { int non_const_qualified_member; } const_qualified_structure; // assignment-to-non-modifiable-lvalue const_qualified_structure.non_const_qualified_member = 0; // pointer-qualifier-cast (int *) &const_qualified_structure.non_const_qualified_member;
identifier-unique-typedef
(rule M.5.3,
M.5.6, M.5.7, and M2012.5.6) now reports the locations of both the typedef and the conflicting occurrence.identifier-unique-tag
in case of forward-declared structs.
This affects rule M.5.4, M.5.6,
M.5.7, and M2012.5.7.type-compatibility
(rule M.8.4)
and parameter-missing-const
(rule M.16.7, M2012.8.13).reserved-identifier
now warns about any identifier
starting with an underscore, including identifiers of the standard library.
This affects rule M.20.1,
M2008.17.0.1, and
M2012.21.1.integral-type-name
in rule M.6.3 and M2012.D.4.6
no longer warns about the use of _Bool
, _Complexor
, and _Imaginary
.
The only check to warn about these type names is now integral-type-name-extended
in rule X.A.5.6.multiple-volatile-accesses
and logop-side-effect
, and the respective rules
CERT.EXP.2, CERT.EXP.10,
and CERT.EXP.30.statement-sideeffect
and expression-statement-dead
now warn about statements containing the ?:
operator if at least one branch
has no side effect. This affects rule CERT.MSC.12.reserved-identifier
now warns about any identifier
starting with an underscore, including identifiers of the standard library.
This affects rule CERT.DCL.37.bitop-type
now considers signed integer constants of positive value
as underlying signed and reports rule violations in such cases. This affects rule CERT.INT.13.type-compatibility
for rule CERT.DCL.40
now uses the unqualified types of function parameters when checking for type compatibility.octal-constant
for rule CERT.DCL.18
has been extended to preprocessing directives.The check reserved-identifier
now warns about any identifier
starting with an underscore, including identifiers of the standard library.
This affects rule ISO.17961.44.
initializer-excess
warns about braced initializer lists exceeding the size of the object initialized.redeclaration
warns about re-declarations of an identifier without linkage in the same scope.0b0101
(GCC extension).non-standard-keyword
are now also reported for the keywords typeof
,
__asm
, __asm__
, and __alignof__
.
This affects rule A.2.7.type-compatibility
(rule A.1.1).const struct { int non_const_qualified_member; } const_qualified_structure; // assignment-to-non-modifiable-lvalue const_qualified_structure.non_const_qualified_member = 0; // pointer-qualifier-cast (int *) &const_qualified_structure.non_const_qualified_member;
type-compatibility
(rule A.1.1)
now uses the unqualified types of function parameters when checking for type compatibility.0
and 1
, and enumeration constant definitions.precedence
,
which checks that expressions are parenthesized according to MISRA-C:2012 rule 12.1.identifier-unique-tag
) in case of forward-declared structs.identifier-unique-typedef
(rule X.B.3.5)
now reports the locations of both the typedef and the conflicting occurrence.identifier-hidden
now warns about hidden tags.
This affects rule X.A.5.14.octal-constant
,
octal-escape-sequence
,
simple-escape-sequence
, and
other-escape-sequence
for rule X.A.3.8
have been extended to preprocessing directives.