diff --git a/addons/misra.py b/addons/misra.py index 0ca52d634..5d6e7d0e9 100755 --- a/addons/misra.py +++ b/addons/misra.py @@ -1519,8 +1519,12 @@ class MisraChecker: state = STATE_OK elif token.str == '}' and state == STATE_OK: # is this {} an unconditional block of code? - link = findRawLink(token) - if (link is None) or (link.previous is None) or (link.previous.str not in ':;{}'): + prev = findRawLink(token) + if prev: + prev = prev.previous + while prev and prev.str[:2] in ('//', '/*'): + prev = prev.previous + if (prev is None) or (prev.str not in ':;{}'): state = STATE_NONE elif token.str == 'case' or token.str == 'default': if state != STATE_OK: diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index fc50b6d77..38d3d3aa2 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -441,6 +441,23 @@ void misra_16_3() { case 12: default: break; } + + switch (x) { + case 1: // comment 1 + { + a = 1; + break; + } + case 2: // comment 2 + { + a = 2; + break; + } + default: + { + break; + } + } } void misra_16_4() {