addons: Added an addon that locates casts.
This commit is contained in:
parent
8689693d6c
commit
5d1307814b
|
@ -0,0 +1,36 @@
|
|||
#/usr/bin/python
|
||||
#
|
||||
# Locate casts in the code
|
||||
#
|
||||
|
||||
import cppcheckdata
|
||||
import sys
|
||||
|
||||
messages = []
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
print('Checking ' + arg + '...')
|
||||
data = cppcheckdata.parsedump(arg)
|
||||
|
||||
for token in data.tokenlist:
|
||||
if token.str != '(' or not token.astOperand1 or token.astOperand2:
|
||||
continue
|
||||
|
||||
# we probably have a cast.. if there is something inside the parentheses
|
||||
# there is a cast. Otherwise this is a function call.
|
||||
typetok = token.next
|
||||
if not typetok.isName:
|
||||
continue
|
||||
|
||||
# cast number => skip output
|
||||
if token.astOperand1.isNumber:
|
||||
continue
|
||||
|
||||
# void cast => often used to suppress compiler warnings
|
||||
if typetok.str == 'void':
|
||||
continue
|
||||
|
||||
msg = '[' + token.file + ':' + str(token.linenr) + '] (information) findcasts.py: found a cast\n'
|
||||
if not msg in messages:
|
||||
messages.append(msg)
|
||||
sys.stderr.write(msg)
|
Loading…
Reference in New Issue