Misra: Add rule 21.3
This commit is contained in:
parent
8a614ed188
commit
06ef496dc7
|
@ -199,3 +199,10 @@ union misra_19_2 { }; // 19.2
|
||||||
|
|
||||||
#define int short // 20.4
|
#define int short // 20.4
|
||||||
#undef X // 20.5
|
#undef X // 20.5
|
||||||
|
|
||||||
|
void misra_21_3() {
|
||||||
|
p1=malloc(10); // 21.3
|
||||||
|
p2=calloc(10); // 21.3
|
||||||
|
realloc(10); // 21.3
|
||||||
|
free(p1); // 21.3
|
||||||
|
}
|
||||||
|
|
|
@ -112,8 +112,6 @@ def countSideEffects(expr):
|
||||||
ret = 0
|
ret = 0
|
||||||
if expr.str in ['++', '--', '=']:
|
if expr.str in ['++', '--', '=']:
|
||||||
ret = 1
|
ret = 1
|
||||||
elif isFunctionCall(expr):
|
|
||||||
ret = 1
|
|
||||||
return ret + countSideEffects(expr.astOperand1) + countSideEffects(expr.astOperand2)
|
return ret + countSideEffects(expr.astOperand1) + countSideEffects(expr.astOperand2)
|
||||||
|
|
||||||
def getForLoopExpressions(forToken):
|
def getForLoopExpressions(forToken):
|
||||||
|
@ -642,6 +640,11 @@ def misra_20_5(rawTokens):
|
||||||
if simpleMatch(token, '# undef'):
|
if simpleMatch(token, '# undef'):
|
||||||
reportError(token, 20, 5)
|
reportError(token, 20, 5)
|
||||||
|
|
||||||
|
def misra_21_3(data):
|
||||||
|
for token in data.tokenlist:
|
||||||
|
if (token.str in ['malloc', 'calloc', 'realloc', 'free']) and token.next and token.next.str == '(':
|
||||||
|
reportError(token, 21, 3)
|
||||||
|
|
||||||
if '-verify' in sys.argv[1:]:
|
if '-verify' in sys.argv[1:]:
|
||||||
VERIFY = True
|
VERIFY = True
|
||||||
|
|
||||||
|
@ -713,6 +716,7 @@ for arg in sys.argv[1:]:
|
||||||
misra_20_3(data.rawTokens)
|
misra_20_3(data.rawTokens)
|
||||||
misra_20_4(data.rawTokens)
|
misra_20_4(data.rawTokens)
|
||||||
misra_20_5(data.rawTokens)
|
misra_20_5(data.rawTokens)
|
||||||
|
misra_21_3(cfg)
|
||||||
|
|
||||||
if VERIFY:
|
if VERIFY:
|
||||||
for expected in VERIFY_EXPECTED:
|
for expected in VERIFY_EXPECTED:
|
||||||
|
|
Loading…
Reference in New Issue