This is the first official stable release of RuleChecker that can be used both within
and without Astrée.
Note that using RuleChecker in conjunction with Astrée maximizes precision on semantical rules.
RuleChecker now also supports coding rules defined by the SEI CERT C standard.
Rule violations can now be commented in the source code using special syntax:
/* ASTREE_comment(1:4,:11, check_global_object_scope, "Unused function, should we remove it?", true_no_defect) */ int f(void) { return X; }
You can generate a comment template in this syntax by clicking on the Comment field of a rule violation in the Findings view.
ignored-source-files
has been removed. Files to be checked are now explicitly specified
in the new RuleChecker configuration. (Cf. also the Astrée release notes on DAX.)__ASTREE_suppress
now also accepts rules_category
as type,
causing all rule checks to be suppressed for the specified code region.recursion
check now include a list of all
the functions involved in the recursion cycle.ALARM (R): check min-comment-density-his failed (violates T.14.1) comment density 0.00 violates the limit of 0.80
ALARM (R): check cast-integer-implicit failed (violates M.10.1-required)
ALARM (R): check identifier-unique failed (violates M.5.7-advisory)
case-insensitive
is enabled.A QSLCD report is now available that documents the development process of RuleChecker, including all verification and quality assurance activities.
static-identifier-reuse
to remove false alarms for block-scope static variables.
This affects the rules 5.5 and 5.7.struct-type-incomplete
for rule 18.1 so that it is now executed
for each translation unit.boolean-invariant
which previously could be reported
in unreachable code. This affects rule 13.7.expression-order
has been replaced by the check evaluation-order
.evaluation-order
(rule 12.2)logop-side-effect
(rule 12.4)statement-sideeffect
(rule 14.2)typedef void VOID; int f(VOID);
function-pointer-integer-cast-implicit
pointer-integral-cast-implicit
cast-pointer-void-arithmetic-implicit
inappropriate-pointer-cast-implicit
pointer-attribute
at-location
forward-declared-enum
statement-expression
assembler
lvalue-cast
type-compatibility
)object-pointer-diff-cast-strict
, object-pointer-diff-cast-strict-implicit
)cast-integer-implicit
)local-object-scope
to remove false alarms when using a variable in a global initializer.
This affects rule 8.7.uninitialized-local-read
which does not require Astrée analysis results.expanded-hash-parameter
.
It warns about macro parameters that are subject to further macro replacement where they occur
in the replacement text both with and without the #
or ##
operator.identifier-unique-typedef
and identifier-unique-tag
for typedefs
declaring the same identifier as struct tag and type name (typedef struct S {...} S;
)
if such declarations are included in multiple translation unitsstatic-identifier-reuse
on block-scope static variablesliteral-assignment
when the definition of a literal involves a type constructed
by typedef
, or when initializing an array of character type by a string literaltypedef void VOID; int f(VOID);
local-object-scope
when using a variable in a global initializeruninitialized-variable-use
on local static variablesarray-size-designator
when initializing an array with a string literalunary-assign-detachment
for write accesses to volatile lvalues inside of aggregatesgoto-nesting
on goto
statements that point into the body of an enclosing
for-loop or selection statementside-effect-in-initializer-list
(rule 13.1)evaluation-order
(rule 13.2)side-effect-in-logical-exp
(rule 13.5)for-loop-condition-sideeffect
(rule 14.2)literal-assignment
and string-literal-modification
for rule 7.4
have been extended to also raise alarms about complex expressions pointing to a string literal.evaluation-order
used in the rules 12.2 and 13.2.
It is now more precise for assignments of the form lhs = f(..)
where
lhs
has no read accesses and f(..)
is a function call.function-pointer-integer-cast-implicit
pointer-integral-cast-implicit
cast-pointer-void-arithmetic-implicit
inappropriate-pointer-cast-implicit
pointer-attribute
at-location
forward-declared-enum
statement-expression
assembler
lvalue-cast
uninitialized-local-read
which does not require Astrée analysis results.Added support for the SEI CERT C coding standard.
logical-operators
can now be set, the default being 3.typedef void VOID; int f(VOID);
cast-implicit
).Added new style rule S.1.5: Enumeration constant identifiers can be validated to match a given regular expression.
0
instead of NaN
.