MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / misra_10_1

Method misra_10_1

addons/misra.py:2396–2418  ·  view source on GitHub ↗
(self, data)

Source from the content-addressed store, hash-verified

2394 # self.reportError(token, 9, 5)
2395
2396 def misra_10_1(self, data):
2397 for token in data.tokenlist:
2398 if not token.isOp:
2399 continue
2400
2401 for t1, t2 in itertools.product(
2402 list(getTernaryOperandsRecursive(token.astOperand1) or [token.astOperand1]),
2403 list(getTernaryOperandsRecursive(token.astOperand2) or [token.astOperand2]),
2404 ):
2405 e1 = getEssentialTypeCategory(t1)
2406 e2 = getEssentialTypeCategory(t2)
2407 if not e1 or not e2:
2408 continue
2409 if token.str in ('<<', '>>'):
2410 if not isUnsignedType(e1):
2411 self.reportError(token, 10, 1)
2412 elif not isUnsignedType(e2) and not token.astOperand2.isNumber:
2413 self.reportError(token, 10, 1)
2414 elif token.str in ('~', '&', '|', '^'):
2415 e1_et = getEssentialType(token.astOperand1)
2416 e2_et = getEssentialType(token.astOperand2)
2417 if e1_et == 'char' or e2_et == 'char':
2418 self.reportError(token, 10, 1)
2419
2420 def misra_10_2(self, data):
2421 def isEssentiallySignedOrUnsigned(op):

Callers

nothing calls this directly

Calls 5

reportErrorMethod · 0.95
getEssentialTypeCategoryFunction · 0.85
isUnsignedTypeFunction · 0.85
getEssentialTypeFunction · 0.85

Tested by

no test coverage detected