cppcheck/addons/threadsafety.py

28 lines
829 B
Python
Raw Normal View History

2017-06-04 22:51:48 +02:00
#!/usr/bin/env python
#
# This script analyses Cppcheck dump files to locate threadsafety issues
# - warn about static local objects
#
import cppcheckdata
import sys
2015-08-21 10:55:19 +02:00
def reportError(token, severity, msg):
sys.stderr.write(
'[' + token.file + ':' + str(token.linenr) + '] (' + severity + ') threadsafety.py: ' + msg + '\n')
2015-08-21 10:55:19 +02:00
def checkstatic(data):
2015-08-21 10:55:19 +02:00
for var in data.variables:
2017-06-04 22:51:48 +02:00
if var.isStatic and var.isLocal and var.isClass:
reportError(var.typeStartToken, 'warning', ('Local static object: ' + var.nameToken.str))
for arg in sys.argv[1:]:
2015-08-21 10:55:19 +02:00
print('Checking ' + arg + '...')
data = cppcheckdata.parsedump(arg)
for cfg in data.configurations:
if len(data.configurations) > 1:
print('Checking ' + arg + ', config "' + cfg.name + '"...')
checkstatic(cfg)