summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-12-15 12:26:07 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-12-15 13:46:04 +0200
commitca6d205e88f052d25325d360a6fd0d744cb43000 (patch)
tree536749ab72443220ec2bb36183c4863f39ca0277 /bin
parentf388d1dbb2edc1d678a658572bef6af4046728ff (diff)
improve the find-unused-typedefs script
Change-Id: If4ab3bf8759c194e6005091d6df6a3a11cd633b7
Diffstat (limited to 'bin')
-rwxr-xr-xbin/find-unused-defines.py1
-rwxr-xr-xbin/find-unused-typedefs.py23
-rwxr-xr-xbin/find-unused-typedefs.sh25
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'
-
-