Misra: Add rule 18.8
This commit is contained in:
parent
8c42e052ac
commit
e3872f9718
|
@ -184,3 +184,9 @@ void misra_17_8(int x) {
|
||||||
void misra_18_5() {
|
void misra_18_5() {
|
||||||
int *** p; // 18.5
|
int *** p; // 18.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void misra_18_8(int x) {
|
||||||
|
int buf1[10];
|
||||||
|
int buf2[sizeof(int)];
|
||||||
|
int vla[x]; // 18.8
|
||||||
|
}
|
||||||
|
|
|
@ -122,6 +122,8 @@ def isConstantExpression(expr):
|
||||||
return True
|
return True
|
||||||
if expr.isName:
|
if expr.isName:
|
||||||
return False
|
return False
|
||||||
|
if simpleMatch(expr.previous, 'sizeof ('):
|
||||||
|
return True
|
||||||
if expr.astOperand1 and not isConstantExpression(expr.astOperand1):
|
if expr.astOperand1 and not isConstantExpression(expr.astOperand1):
|
||||||
return False
|
return False
|
||||||
if expr.astOperand2 and not isConstantExpression(expr.astOperand2):
|
if expr.astOperand2 and not isConstantExpression(expr.astOperand2):
|
||||||
|
@ -532,6 +534,16 @@ def misra_18_5(data):
|
||||||
if count > 2:
|
if count > 2:
|
||||||
reportError(var.nameToken, 18, 5)
|
reportError(var.nameToken, 18, 5)
|
||||||
|
|
||||||
|
def misra_18_8(data):
|
||||||
|
for var in data.variables:
|
||||||
|
if not var.isArray:
|
||||||
|
continue
|
||||||
|
# TODO Array dimensions are not available in dump
|
||||||
|
typetok = var.nameToken.next
|
||||||
|
if not typetok or typetok.str != '[':
|
||||||
|
continue
|
||||||
|
if not isConstantExpression(typetok.astOperand2):
|
||||||
|
reportError(var.nameToken, 18, 8)
|
||||||
|
|
||||||
if '-verify' in sys.argv[1:]:
|
if '-verify' in sys.argv[1:]:
|
||||||
VERIFY = True
|
VERIFY = True
|
||||||
|
@ -596,6 +608,7 @@ for arg in sys.argv[1:]:
|
||||||
misra_17_6(data.rawTokens)
|
misra_17_6(data.rawTokens)
|
||||||
misra_17_8(cfg)
|
misra_17_8(cfg)
|
||||||
misra_18_5(cfg)
|
misra_18_5(cfg)
|
||||||
|
misra_18_8(cfg)
|
||||||
|
|
||||||
if VERIFY:
|
if VERIFY:
|
||||||
for expected in VERIFY_EXPECTED:
|
for expected in VERIFY_EXPECTED:
|
||||||
|
|
Loading…
Reference in New Issue