From a92ce98cabeb0eadda95bb62a0e3843785518f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 16 Apr 2017 12:00:03 +0200 Subject: [PATCH] Misra: Add rule 11.4 --- addons/misra-test.c | 4 ++++ addons/misra.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/addons/misra-test.c b/addons/misra-test.c index a9f8e0a67..21c5bbc4c 100644 --- a/addons/misra-test.c +++ b/addons/misra-test.c @@ -24,6 +24,10 @@ void misra_7_3() { int x = 12lu; // 7.3 } +void misra_11_4(u8*p) { + u64 y = (u64)p; // 11.4 +} + void misra_11_5(void *p) { x = (u8 *)p; // 11.5 } diff --git a/addons/misra.py b/addons/misra.py index d3c44cb78..462f8a170 100644 --- a/addons/misra.py +++ b/addons/misra.py @@ -266,6 +266,17 @@ def misra_12_1_sizeof(rawTokens): else: state = 0 +def misra_11_4(data): + for token in data.tokenlist: + if not isCast(token): + continue + vt1 = token.valueType + vt2 = token.astOperand1.valueType + if not vt1 or not vt2: + continue + if vt1.pointer==0 and vt2.pointer>0 and vt2.type != 'void': + reportError(token, 11, 4) + def misra_11_5(data): for token in data.tokenlist: if not isCast(token): @@ -765,6 +776,7 @@ for arg in sys.argv[1:]: if cfgNumber == 1: misra_7_1(data.rawTokens) misra_7_3(data.rawTokens) + misra_11_4(cfg) misra_11_5(cfg) misra_11_6(cfg) misra_11_7(cfg)