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

Function parseheader

tools/parse-glibc.py:35–119  ·  view source on GitHub ↗
(cppcheckpath, filename)

Source from the content-addressed store, hash-verified

33
34
35def parseheader(cppcheckpath, filename):
36 with open(filename, 'rt') as f:
37 data = f.read()
38
39 with open(cppcheckpath + '/cfg/std.cfg', 'rt') as f:
40 stdcfg = f.read()
41
42 with open(cppcheckpath + '/cfg/posix.cfg', 'rt') as f:
43 posixcfg = f.read()
44
45 while '/*' in data:
46 pos1 = data.find('/*')
47 pos2 = data.find('*/', pos1 + 2)
48 data = data[:pos1] + data[pos2 + 2:]
49
50 data = data.replace('\\\n', '')
51
52 while '\n#' in data:
53 pos1 = data.find('\n#')
54 pos2 = data.find('\n', pos1 + 1)
55 data = data[:pos1] + data[pos2:]
56
57 while '\n__BEGIN' in data:
58 pos1 = data.find('\n__BEGIN')
59 pos2 = data.find('\n', pos1 + 1)
60 data = data[:pos1] + data[pos2:]
61
62 while '\n__END' in data:
63 pos1 = data.find('\n__END')
64 pos2 = data.find('\n', pos1 + 1)
65 data = data[:pos1] + data[pos2:]
66
67 data = data.replace('\n\n', '\n')
68 data = data.replace('\t', ' ')
69 data = data.replace(',\n ', ',')
70 data = data.replace(')\n ', ',')
71 data = data.replace(' ', ' ')
72
73 output = []
74
75 for line in data.split('\n'):
76 if (line[:7] != 'extern ' and ' extern ' not in line) or line[-1] != ';':
77 continue
78
79 functionNameEnd = line.find('(') - 1
80 if functionNameEnd < 0:
81 continue
82 while line[functionNameEnd] == ' ':
83 functionNameEnd -= 1
84 if functionNameEnd < 10:
85 continue
86 functionNameStart = functionNameEnd
87 while line[functionNameStart] == '_' or line[functionNameStart].isalnum():
88 functionNameStart -= 1
89 if functionNameStart < 10:
90 continue
91 if line[functionNameStart] != '*' and line[functionNameStart] != ' ':
92 continue

Callers 1

parse-glibc.pyFile · 0.85

Calls 4

checknonnullFunction · 0.85
readMethod · 0.45
findMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected