diff options
-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' - - |