101 lines
1.5 KiB
Plaintext
101 lines
1.5 KiB
Plaintext
// Check violations for rule 14.4
|
|
// https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_14_04.c
|
|
//
|
|
// Confidence: Moderate
|
|
// Copyright: (C) 2021 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
virtual report
|
|
|
|
|
|
@initialize:python@
|
|
@@
|
|
|
|
@rule1_base@
|
|
identifier function, v;
|
|
type T1, T2;
|
|
parameter list[n] P1;
|
|
parameter list[n1] P2;
|
|
@@
|
|
(
|
|
T1 function(P1, T2 v, P2) {...}
|
|
|
|
|
T1 function(P1, T2 *v, P2) {...}
|
|
)
|
|
|
|
@ script:python @
|
|
t << rule1_base.T2;
|
|
v << rule1_base.v;
|
|
@@
|
|
|
|
if t == "bool":
|
|
cocci.include_match(False)
|
|
|
|
@rule1@
|
|
identifier rule1_base.v;
|
|
position p;
|
|
@@
|
|
(
|
|
while (v@p) {...}
|
|
|
|
|
if (v@p) {...}
|
|
)
|
|
|
|
@ script:python @
|
|
p << rule1.p;
|
|
@@
|
|
|
|
msg = "WARNING: Violation to rule 14.4 (Controlling expression shall have essentially Boolean type)"
|
|
coccilib.report.print_report(p[0], msg)
|
|
|
|
@rule2_base@
|
|
identifier v;
|
|
type T;
|
|
@@
|
|
T v;
|
|
...
|
|
|
|
@ script:python @
|
|
t << rule2_base.T;
|
|
v << rule2_base.v;
|
|
@@
|
|
|
|
if t == "bool":
|
|
cocci.include_match(False)
|
|
|
|
|
|
@rule2@
|
|
position p;
|
|
identifier rule2_base.v;
|
|
@@
|
|
while (v@p) {...}
|
|
|
|
@ script:python @
|
|
p << rule2.p;
|
|
@@
|
|
|
|
msg = "WARNING: Violation to rule 14.4 (Controlling expression shall have essentially Boolean type)"
|
|
coccilib.report.print_report(p[0], msg)
|
|
|
|
@rule3@
|
|
position p;
|
|
constant c;
|
|
@@
|
|
(
|
|
while (c@p) {...}
|
|
|
|
|
while (!c@p) {...}
|
|
|
|
|
if (c@p) {...}
|
|
|
|
|
if (!c@p) {...}
|
|
)
|
|
|
|
@ script:python @
|
|
p << rule3.p;
|
|
@@
|
|
|
|
msg = "WARNING: Violation to rule 14.4 (Controlling expression shall have essentially Boolean type)"
|
|
coccilib.report.print_report(p[0], msg)
|