diff --git a/addons/misra-test.c b/addons/misra-test.c index eb0503b80..a8a300833 100644 --- a/addons/misra-test.c +++ b/addons/misra-test.c @@ -48,6 +48,10 @@ void misra_13_3() { x = y++; // 13.3 } +void misra_13_4() { + if (x != (y = z)) {} // 13.4 +} + void misra_13_5() { if (x && (y++ < 123)){} // 13.5 } diff --git a/addons/misra.py b/addons/misra.py index 2acb52b59..be17e9aa3 100644 --- a/addons/misra.py +++ b/addons/misra.py @@ -254,6 +254,15 @@ def misra_13_3(data): if countSideEffects(token) >= 2: reportError(token, 13, 3) +def misra_13_4(data): + for token in data.tokenlist: + if token.str != '=': + continue + if not token.astParent: + continue + if not (token.astParent.str in [',', ';']): + reportError(token, 13, 4) + def misra_13_5(data): for token in data.tokenlist: if token.isLogicalOp and hasSideEffectsRecursive(token.astOperand2): @@ -297,6 +306,7 @@ for arg in sys.argv[1:]: misra_12_4(cfg) misra_13_1(cfg) misra_13_3(cfg) + misra_13_4(cfg) misra_13_5(cfg) misra_14_4(cfg) misra_15_1(cfg)