misra: implement rule 22.7
This commit is contained in:
parent
6a565f9e2f
commit
10c2dcf721
|
@ -3463,6 +3463,21 @@ class MisraChecker:
|
||||||
if fileptr.variable and cppcheckdata.simpleMatch(fileptr.variable.typeStartToken, 'FILE *'):
|
if fileptr.variable and cppcheckdata.simpleMatch(fileptr.variable.typeStartToken, 'FILE *'):
|
||||||
self.reportError(token, 22, 5)
|
self.reportError(token, 22, 5)
|
||||||
|
|
||||||
|
def misra_22_7(self, cfg):
|
||||||
|
for eofToken in cfg.tokenlist:
|
||||||
|
if eofToken.str != 'EOF':
|
||||||
|
continue
|
||||||
|
if eofToken.astParent is None or not eofToken.astParent.isComparisonOp:
|
||||||
|
continue
|
||||||
|
if eofToken.astParent.astOperand1 == eofToken:
|
||||||
|
eofTokenSibling = eofToken.astParent.astOperand2
|
||||||
|
else:
|
||||||
|
eofTokenSibling = eofToken.astParent.astOperand1
|
||||||
|
while isCast(eofTokenSibling) and eofTokenSibling.valueType and eofTokenSibling.valueType.type and eofTokenSibling.valueType.type == 'int':
|
||||||
|
eofTokenSibling = eofTokenSibling.astOperand2 if eofTokenSibling.astOperand2 else eofTokenSibling.astOperand1
|
||||||
|
if eofTokenSibling is not None and eofTokenSibling.valueType and eofTokenSibling.valueType and eofTokenSibling.valueType.type in ('bool', 'char', 'short'):
|
||||||
|
self.reportError(eofToken, 22, 7)
|
||||||
|
|
||||||
def misra_22_8(self, cfg):
|
def misra_22_8(self, cfg):
|
||||||
is_zero = False
|
is_zero = False
|
||||||
for token in cfg.tokenlist:
|
for token in cfg.tokenlist:
|
||||||
|
@ -4080,6 +4095,7 @@ class MisraChecker:
|
||||||
self.executeCheck(2115, self.misra_21_15, cfg)
|
self.executeCheck(2115, self.misra_21_15, cfg)
|
||||||
# 22.4 is already covered by Cppcheck writeReadOnlyFile
|
# 22.4 is already covered by Cppcheck writeReadOnlyFile
|
||||||
self.executeCheck(2205, self.misra_22_5, cfg)
|
self.executeCheck(2205, self.misra_22_5, cfg)
|
||||||
|
self.executeCheck(2207, self.misra_22_7, cfg)
|
||||||
self.executeCheck(2208, self.misra_22_8, cfg)
|
self.executeCheck(2208, self.misra_22_8, cfg)
|
||||||
self.executeCheck(2209, self.misra_22_9, cfg)
|
self.executeCheck(2209, self.misra_22_9, cfg)
|
||||||
self.executeCheck(2210, self.misra_22_10, cfg)
|
self.executeCheck(2210, self.misra_22_10, cfg)
|
||||||
|
|
|
@ -1787,6 +1787,11 @@ static void misra_22_5(FILE *f) {
|
||||||
int y = f->pos; // 22.5
|
int y = f->pos; // 22.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void misra_22_7(char ch)
|
||||||
|
{
|
||||||
|
if (EOF == ch) {} // 22.7
|
||||||
|
}
|
||||||
|
|
||||||
static void misra_22_8(void)
|
static void misra_22_8(void)
|
||||||
{
|
{
|
||||||
(void)strtoll("123", NULL, 10); // 22.8
|
(void)strtoll("123", NULL, 10); // 22.8
|
||||||
|
|
Loading…
Reference in New Issue