2017-04-14 11:20:20 +02:00
|
|
|
// To test:
|
|
|
|
// ~/cppcheck/cppcheck --dump misra-test.c && python misra.py -verify misra-test.c.dump
|
2017-04-08 19:00:50 +02:00
|
|
|
|
2017-04-13 10:04:50 +02:00
|
|
|
typedef unsigned char u8;
|
|
|
|
|
2017-04-11 14:45:38 +02:00
|
|
|
void misra_5_1() {
|
2017-04-08 19:00:50 +02:00
|
|
|
int a123456789012345678901234567890; // no-warning
|
2017-04-11 22:21:54 +02:00
|
|
|
int a1234567890123456789012345678901; // 5.1
|
2017-04-08 19:00:50 +02:00
|
|
|
}
|
|
|
|
|
2017-04-11 14:45:38 +02:00
|
|
|
void misra_7_1() {
|
2017-04-11 22:21:54 +02:00
|
|
|
int x = 066; // 7.1
|
2017-04-08 19:00:50 +02:00
|
|
|
}
|
|
|
|
|
2017-04-11 19:03:35 +02:00
|
|
|
void misra_7_3() {
|
2017-04-11 22:21:54 +02:00
|
|
|
int x = 12l; // 7.3
|
2017-04-12 19:07:10 +02:00
|
|
|
int x = 12lu; // 7.3
|
2017-04-11 22:21:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void misra_12_1() {
|
2017-04-12 16:19:13 +02:00
|
|
|
sz = sizeof x + y; // 12.1
|
2017-04-11 22:21:54 +02:00
|
|
|
a = (b * c) + d;
|
|
|
|
a = b << c + d; // 12.1
|
2017-04-11 19:03:35 +02:00
|
|
|
}
|
|
|
|
|
2017-04-13 10:04:50 +02:00
|
|
|
void misra_12_2(u8 x) {
|
|
|
|
a = x << 8; // 12.2
|
|
|
|
}
|
|
|
|
|
2017-04-12 20:18:54 +02:00
|
|
|
void misra_12_3() {
|
2017-04-12 21:45:39 +02:00
|
|
|
f((1,2),3); // TODO
|
2017-04-12 20:18:54 +02:00
|
|
|
for (i=0;i<10;i++,j++){} // 12.3
|
|
|
|
}
|
|
|
|
|
2017-04-13 11:05:04 +02:00
|
|
|
void misra_12_4() {
|
|
|
|
x = 123456u * 123456u; // 12.4
|
|
|
|
}
|
|
|
|
|
2017-04-13 19:11:48 +02:00
|
|
|
void misra_13_1(int *p) {
|
|
|
|
volatile int v;
|
|
|
|
int a[3] = {0, (*p)++, 2}; // 13.1
|
|
|
|
int b[2] = {v,1}; // TODO
|
|
|
|
}
|
|
|
|
|
2017-04-13 19:38:25 +02:00
|
|
|
void misra_13_3() {
|
|
|
|
x = y++; // 13.3
|
|
|
|
}
|
|
|
|
|
2017-04-13 19:43:06 +02:00
|
|
|
void misra_13_4() {
|
|
|
|
if (x != (y = z)) {} // 13.4
|
2017-04-14 08:05:14 +02:00
|
|
|
else {}
|
2017-04-13 19:43:06 +02:00
|
|
|
}
|
|
|
|
|
2017-04-11 14:45:38 +02:00
|
|
|
void misra_13_5() {
|
2017-04-11 22:21:54 +02:00
|
|
|
if (x && (y++ < 123)){} // 13.5
|
2017-04-14 08:05:14 +02:00
|
|
|
else {}
|
2017-04-09 10:11:54 +02:00
|
|
|
}
|
|
|
|
|
2017-04-13 21:40:59 +02:00
|
|
|
void misra_13_6() {
|
|
|
|
return sizeof(x++); // 13.6
|
|
|
|
}
|
|
|
|
|
2017-04-13 22:05:27 +02:00
|
|
|
void misra_14_1() {
|
|
|
|
for (float f=0.1f; f<1.0f; f += 0.1f){} // 14.1
|
|
|
|
}
|
|
|
|
|
2017-04-13 22:26:12 +02:00
|
|
|
void misra_14_2() {
|
|
|
|
for (dostuff();a<10;a++) {} // 14.2
|
|
|
|
for (;i++<10;) {} // 14.2
|
|
|
|
for (;i<10;dostuff()) {} // TODO
|
|
|
|
// TODO check more variants
|
|
|
|
}
|
|
|
|
|
2017-04-11 14:45:38 +02:00
|
|
|
void misra_14_4() {
|
2017-04-11 22:21:54 +02:00
|
|
|
if (x+4){} // 14.4
|
2017-04-14 08:05:14 +02:00
|
|
|
else {}
|
2017-04-08 19:00:50 +02:00
|
|
|
}
|
|
|
|
|
2017-04-11 14:45:38 +02:00
|
|
|
void misra_15_1() {
|
2017-04-11 22:21:54 +02:00
|
|
|
goto a1; // 15.1
|
2017-04-13 22:44:43 +02:00
|
|
|
a1:
|
2017-04-08 19:00:50 +02:00
|
|
|
}
|
|
|
|
|
2017-04-13 22:44:43 +02:00
|
|
|
void misra_15_2() {
|
|
|
|
label:
|
|
|
|
goto label; // 15.2 15.1
|
|
|
|
}
|
2017-04-13 23:02:06 +02:00
|
|
|
|
|
|
|
void misra_15_3() {
|
|
|
|
if (x!=0) {
|
|
|
|
goto L1; // 15.3 15.1
|
|
|
|
if (y!=0) {
|
|
|
|
L1:
|
2017-04-14 08:05:14 +02:00
|
|
|
} else {}
|
|
|
|
} else {}
|
2017-04-13 23:02:06 +02:00
|
|
|
}
|
2017-04-13 23:07:41 +02:00
|
|
|
|
|
|
|
int misra_15_5() {
|
|
|
|
if (x!=0) {
|
|
|
|
return 1; // 15.5
|
2017-04-14 08:05:14 +02:00
|
|
|
} else {}
|
2017-04-13 23:07:41 +02:00
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
|
2017-04-13 23:24:35 +02:00
|
|
|
void misra_15_6() {
|
|
|
|
if (x!=0); // 15.6
|
2017-04-14 08:05:14 +02:00
|
|
|
else{}
|
|
|
|
}
|
|
|
|
|
|
|
|
void misra_15_7() {
|
|
|
|
if (x!=0){} // 15.7
|
2017-04-13 23:24:35 +02:00
|
|
|
}
|
2017-04-14 08:05:14 +02:00
|
|
|
|
2017-04-14 08:17:32 +02:00
|
|
|
void misra_16_2() {
|
|
|
|
switch (x) {
|
2017-04-14 12:57:07 +02:00
|
|
|
default:
|
|
|
|
break;
|
2017-04-14 08:17:32 +02:00
|
|
|
case 1:
|
|
|
|
while (y>4) {
|
|
|
|
case 2: break; // 16.2
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2017-04-14 10:46:35 +02:00
|
|
|
|
|
|
|
void misra_16_3() {
|
|
|
|
switch (x) {
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
a=1;
|
|
|
|
case 3: // 16.3
|
|
|
|
a=2;
|
|
|
|
// fallthrough
|
|
|
|
case 5:
|
|
|
|
break;
|
|
|
|
default: break;
|
|
|
|
}
|
|
|
|
}
|
2017-04-14 12:57:07 +02:00
|
|
|
|
|
|
|
void misra_16_4() {
|
|
|
|
switch (x) { // 16.4
|
|
|
|
case 1:
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
break;
|
|
|
|
}
|
2017-04-14 13:07:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void misra_16_5() {
|
|
|
|
switch (x) {
|
|
|
|
case 1:
|
|
|
|
break;
|
|
|
|
default: // 16.5
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|