Created a small program that can find unused functions.
This commit is contained in:
parent
feb3827ba1
commit
1a7aa73b26
59
src/find-unused-functions.py
Executable file
59
src/find-unused-functions.py
Executable file
@ -0,0 +1,59 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import commands
|
||||
import sys
|
||||
|
||||
|
||||
def findfunctions(excludes):
|
||||
"""
|
||||
Extract functions from tags file
|
||||
"""
|
||||
fh = open("tags",'r')
|
||||
dict = {}
|
||||
for l in fh.readlines():
|
||||
data = l.strip().split('\t')
|
||||
if len(data) >= 4:
|
||||
fn = data[0]
|
||||
sourcefile = data[1]
|
||||
etype = data[3]
|
||||
if not fn.startswith("!_TAG_"):
|
||||
if sourcefile not in excludes:
|
||||
if etype in ['f']:
|
||||
dict[fn] = sourcefile
|
||||
return dict
|
||||
|
||||
def main():
|
||||
args = []
|
||||
if len(sys.argv) > 0:
|
||||
args = sys.argv[1:]
|
||||
|
||||
mincount = 0
|
||||
if len(args) > 0:
|
||||
mincount = int(args[0])
|
||||
|
||||
""" Force indent """
|
||||
cmd = "indent *.c *.h"
|
||||
output = commands.getoutput(cmd)
|
||||
|
||||
""" Force ctags """
|
||||
cmd = "ctags *.c *.h"
|
||||
output = commands.getoutput(cmd)
|
||||
|
||||
excludes = ['scanner.c','scanner.h','parser.c','parser.h']
|
||||
fnames = findfunctions(excludes)
|
||||
for fname in fnames.keys():
|
||||
"""
|
||||
The ..* construct makes sure that function definitions are
|
||||
skipped (based on the indent settings
|
||||
"""
|
||||
cmd = "grep '..*%s' *.c" % (fname)
|
||||
#print cmd
|
||||
output = commands.getoutput(cmd).splitlines()
|
||||
if len(output) <= mincount:
|
||||
print "%s\t%s" % (fnames[fname],fname)
|
||||
if len(output) > 0:
|
||||
print output
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user