Skip to content

Commit a6c1653

Browse files
committed
Fixed #10853 (False positive: misra-c2012-16.3: macro parameter "default")
1 parent 2eed660 commit a6c1653

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

addons/misra.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2966,15 +2966,24 @@ def misra_16_3(self, rawTokens):
29662966
STATE_OK = 2 # a case/default is allowed (we have seen 'break;'/'comment'/'{'/attribute)
29672967
STATE_SWITCH = 3 # walking through switch statement scope
29682968

2969+
define = None
29692970
state = STATE_NONE
2970-
end_swtich_token = None # end '}' for the switch scope
2971+
end_switch_token = None # end '}' for the switch scope
29712972
for token in rawTokens:
2973+
if simpleMatch(token, '# define'):
2974+
define = token
2975+
if define:
2976+
if token.linenr != define.linenr:
2977+
define = None
2978+
else:
2979+
continue
2980+
29722981
# Find switch scope borders
29732982
if token.str == 'switch':
29742983
state = STATE_SWITCH
29752984
if state == STATE_SWITCH:
29762985
if token.str == '{':
2977-
end_swtich_token = findRawLink(token)
2986+
end_switch_token = findRawLink(token)
29782987
else:
29792988
continue
29802989

@@ -2983,7 +2992,7 @@ def misra_16_3(self, rawTokens):
29832992
elif token.str == ';':
29842993
if state == STATE_BREAK:
29852994
state = STATE_OK
2986-
elif token.next and token.next == end_swtich_token:
2995+
elif token.next and token.next == end_switch_token:
29872996
self.reportError(token.next, 16, 3)
29882997
else:
29892998
state = STATE_NONE

addons/test/misra/misra-test.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,6 +1555,8 @@ static void misra_16_3(void) {
15551555
case 2:
15561556
x++;
15571557
} // 16.3
1558+
1559+
#define M_16_3(a,b,default) { (a), (b), (default) },
15581560
}
15591561

15601562
static void misra_16_4(void) {

0 commit comments

Comments
 (0)