diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-12-15 12:26:07 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-12-15 13:46:04 +0200 |
commit | ca6d205e88f052d25325d360a6fd0d744cb43000 (patch) | |
tree | 536749ab72443220ec2bb36183c4863f39ca0277 /bin | |
parent | f388d1dbb2edc1d678a658572bef6af4046728ff (diff) |
improve the find-unused-typedefs script
Change-Id: If4ab3bf8759c194e6005091d6df6a3a11cd633b7
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/find-unused-defines.py | 1 | ||||
-rwxr-xr-x | bin/find-unused-typedefs.py | 23 | ||||
-rwxr-xr-x | bin/find-unused-typedefs.sh | 25 |
3 files changed, 21 insertions, 28 deletions
diff --git a/bin/find-unused-defines.py b/bin/find-unused-defines.py index 7f5f27cb6bc7..2c08cc6cd342 100755 --- a/bin/find-unused-defines.py +++ b/bin/find-unused-defines.py @@ -97,6 +97,7 @@ def in_exclusion_set( a ): return True; return False; +# find defines, excluding the externals folder a = subprocess.Popen("git grep -hP '^#define\s+\w+\s+' -- \"[!e][!x][!t]*\" | sort -u", stdout=subprocess.PIPE, shell=True) with a.stdout as txt: diff --git a/bin/find-unused-typedefs.py b/bin/find-unused-typedefs.py index e292f097526a..1f3395835b89 100755 --- a/bin/find-unused-typedefs.py +++ b/bin/find-unused-typedefs.py @@ -2,8 +2,11 @@ import subprocess -a = subprocess.Popen("git grep -P '^typedef\s+.+\s+\w+;' -- \"[!e][!x][!t]*\"", stdout=subprocess.PIPE, shell=True) +# find typedefs, excluding the externals folder +a = subprocess.Popen("git grep -P 'typedef\s+.+\s+\w+;' -- \"[!e][!x][!t]*\"", stdout=subprocess.PIPE, shell=True) +# parse out the typedef names +typedefSet = set() with a.stdout as txt: for line in txt: idx2 = line.rfind(";") @@ -12,6 +15,20 @@ with a.stdout as txt: if typedefName.startswith("*"): typedefName = typedefName[1:] # ignore anything less than 5 characters, it's probably a parsing error - if len(typedefName) > 4: - print typedefName + if len(typedefName) < 5: continue + typedefSet.add(typedefName) + +for typedefName in sorted(typedefSet): + print("checking: " + typedefName) + a = subprocess.Popen(["git", "grep", "-wn", typedefName], stdout=subprocess.PIPE) + foundLine2 = "" + cnt = 0 + with a.stdout as txt2: + for line2 in txt2: + cnt = cnt + 1 + foundLine2 += line2 + if cnt == 1: + print("remove: " + foundLine2) + elif cnt == 2: + print("inline: " + foundLine2) diff --git a/bin/find-unused-typedefs.sh b/bin/find-unused-typedefs.sh deleted file mode 100755 index bc4378533efa..000000000000 --- a/bin/find-unused-typedefs.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# This is a pretty brute-force approach. It takes several hours to run on a top-spec MacbookAir. -# It also produces some false positives, so it requires careful examination and testing of the results. -# -# Algorithm Summary: -# First we find all #defines, -# then we search for each of them in turn, -# and if we find only one instance of a #define, we print it out. -# -# Algorithm Detail: -# (1) find #defines, excluding the externals folder -# (2) extract just the constant name from the search results -# (3) trim blank lines -# (4) sort the results, mostly so I have an idea how far along the process is -# (5) for each result: -# (6) grep for the constant -# (7) use awk to check if only one match for a given constant was found -# (8) if so, generate a sed command to remove the #define -# -bin/find-unused-typedefs.py \ - | sort -u \ - | xargs -Ixxx -n 1 -P 8 sh -c \ - '( git grep -w xxx | awk -f bin/find-unused-defines.awk -v p1=xxx ) && echo xxx 1>&2' - - |