[Libreoffice-commits] core.git: bin/find-unused-defines-in-hrc-files.py bin/find-unused-rid.py sd/inc

Noel Grandin noel.grandin at collabora.co.uk
Wed Mar 15 06:47:15 UTC 2017


 bin/find-unused-defines-in-hrc-files.py |  109 ++++++++++++++++++++++++++++++++
 bin/find-unused-rid.py                  |  103 ------------------------------
 sd/inc/sdattr.hrc                       |   57 +---------------
 3 files changed, 115 insertions(+), 154 deletions(-)

New commits:
commit 2589f090875f3b81d91211e72cf36a6f1441c01a
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Mar 14 15:53:49 2017 +0200

    remove unused HRC defines in sd/
    
    improve the existing 'find unused RID constants' script
    
    Change-Id: I6facbf9ef929bd31dc59eba4a1807c72b87cdb2f
    Reviewed-on: https://gerrit.libreoffice.org/35186
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/bin/find-unused-rid.py b/bin/find-unused-defines-in-hrc-files.py
similarity index 51%
rename from bin/find-unused-rid.py
rename to bin/find-unused-defines-in-hrc-files.py
index 82ea293..f24e1a6 100755
--- a/bin/find-unused-rid.py
+++ b/bin/find-unused-defines-in-hrc-files.py
@@ -1,10 +1,11 @@
 #!/usr/bin/python
 
-# Search for unused RID_ constants.
+# Search for unused constants in .hrc files.
 #
-# Note that sometimes RID constants are calculated, so some careful checking of the output is necessary.
+# Note that sometimes these constants are calculated, so some careful checking of the output is necessary.
+#
+# Takes about 4 hours to run this on a fast machine with an SSD
 #
-# Takes about 30min to run this on a fast machine.
 
 import subprocess
 import sys
@@ -55,49 +56,54 @@ exclusionSet = set([
     "RID_SVXSTR_TRASNGR",
     # other places doing calculations
     "RID_SVXSTR_DEPTH",
-    "RID_SUBSETSTR_"
+    "RID_SUBSETSTR_",
+    "ANALYSIS_"
     ])
 
 
-def startswith_one_of( a, aset ):
-    for f in aset:
+def in_exclusion_set( a ):
+    for f in exclusionSet:
         if a.startswith(f):
             return True;
     return False;
 
-a = subprocess.Popen("git grep -P '^#define\s+RID_\w+\s+' -- *.hrc | sort -u", stdout=subprocess.PIPE, shell=True)
+a = subprocess.Popen("git grep -hP '^#define\s+\w+\s+' -- *.hrc | sort -u", stdout=subprocess.PIPE, shell=True)
 
 with a.stdout as txt:
     for line in txt:
         idx1 = line.find("#define ")
         idx2 = line.find(" ", idx1 + 9)
-        ridName = line[idx1+8 : idx2]
+        idName = line[idx1+8 : idx2]
         # the various _START and _END constants are normally unused outside of the .hrc and .src files, and that's fine
-        if ridName.endswith("_START"): continue
-        if ridName.endswith("_BEGIN"): continue
-        if ridName.endswith("_END"): continue
-        if ridName == "RID_GROUPS_SFXOFFSET": continue
-        if ridName == "RID_SVX_FIRSTFREE": continue
-        if startswith_one_of(ridName, exclusionSet): continue
+        if idName.endswith("_START"): continue
+        if idName.endswith("_BEGIN"): continue
+        if idName.endswith("_END"): continue
+        if idName.startswith("RID_"):
+            if idName == "RID_GROUPS_SFXOFFSET": continue
+            if idName == "RID_SVX_FIRSTFREE": continue
+        if in_exclusion_set(idName): continue
         # search for the constant
-        b = subprocess.Popen(["git", "grep", "-w", ridName], stdout=subprocess.PIPE)
-        # check if we found one in actual code
-        found_in_code = False
-        # check that the constant is not being used as an identifier by MenuItem entries in .src files
-        found_menu_identifier = False
-        # check that the constant is not being used by the property controller extension or report inspection, which use macros
-        # to declare constants, hiding them from a search
-        found_property_macros = False
+        b = subprocess.Popen(["git", "grep", "-wl", idName], stdout=subprocess.PIPE)
+        found_reason_to_exclude = False
         with b.stdout as txt2:
             for line2 in txt2:
-                if not line2.endswith(".hrc") and not line2.endswith(".src"): found_in_code = True
-                if line2.find("Identifier = ") != -1: found_menu_identifier = True
-                if line2.find("extensions/source/propctrlr") != -1: found_property_macros = True
-                if line2.find("reportdesign/source/ui/inspection/inspection.src") != -1: found_property_macros = True
-        if not found_in_code and not found_menu_identifier and not found_property_macros:
-            sys.stdout.write(ridName + '\n')
+                line2 = line2.strip() # otherwise the comparisons below will not work
+                # check if we found one in actual code
+                if not line2.endswith(".hrc") and not line2.endswith(".src"): found_reason_to_exclude = True
+                if idName.startswith("RID_"):
+                        # check that the constant is not being used as an identifier by entries in .src files
+                        if line2.endswith(".src") and line2.find("Identifier = ") != -1: found_reason_to_exclude = True
+                        # check that the constant is not being used by the property controller extension or reportdesigner inspection,
+                        # which use macros to declare constants, hiding them from a search
+                        if line2.find("extensions/source/propctrlr") != -1: found_reason_to_exclude = True
+                        if line2.find("reportdesign/source/ui/inspection/inspection.src") != -1: found_reason_to_exclude = True
+                if idName.startswith("HID_"):
+                        # check that the constant is not being used as an identifier by entries in .src files
+                        if line2.endswith(".src") and line2.find("HelpId = ") != -1: found_reason_to_exclude = True
+        if not found_reason_to_exclude:
+            sys.stdout.write(idName + '\n')
             # otherwise the previous line of output will be incorrectly mixed into the below git output, because of buffering
             sys.stdout.flush()
             # search again, so we log the location and filename of stuff we want to remove
-            subprocess.call(["git", "grep", "-wn", ridName])
+            subprocess.call(["git", "grep", "-wn", idName])
 
diff --git a/sd/inc/sdattr.hrc b/sd/inc/sdattr.hrc
index e275090..791c031 100644
--- a/sd/inc/sdattr.hrc
+++ b/sd/inc/sdattr.hrc
@@ -22,14 +22,8 @@
 
 #include <sfx2/sfx.hrc>
 
-// Begin page attributes
-#define ATTR_PAGE_START         SID_SD_START + 1234
-#define ATTR_PAGE_OBJECTS       ATTR_PAGE_START + 2
-#define ATTR_PAGE_LAYOUT        ATTR_PAGE_START + 3
-#define ATTR_PAGE_END           ATTR_PAGE_LAYOUT
-
 // Layer attributes
-#define ATTR_LAYER_START        ATTR_PAGE_END + 1
+#define ATTR_LAYER_START        SID_SD_START + 1234
 #define ATTR_LAYER_NAME         ATTR_LAYER_START
 #define ATTR_LAYER_VISIBLE      ATTR_LAYER_START + 1
 #define ATTR_LAYER_PRINTABLE    ATTR_LAYER_START + 2
@@ -39,17 +33,8 @@
 #define ATTR_LAYER_DESC         ATTR_LAYER_START + 6
 #define ATTR_LAYER_END          ATTR_LAYER_DESC
 
-// Begin Dia attribute
-#define ATTR_DIA_START          ATTR_LAYER_END + 1
-#define ATTR_DIA_EFFECT         ATTR_DIA_START
-#define ATTR_DIA_SPEED          ATTR_DIA_START + 1
-#define ATTR_DIA_AUTO           ATTR_DIA_START + 2
-#define ATTR_DIA_TIME           ATTR_DIA_START + 3
-#define ATTR_DIA_SOUNDFILE      ATTR_DIA_START + 5
-#define ATTR_DIA_END            ATTR_DIA_SOUNDFILE
-
 // presentation attributes
-#define ATTR_PRESENT_START              ATTR_DIA_END + 1
+#define ATTR_PRESENT_START              ATTR_LAYER_END + 1
 #define ATTR_PRESENT_ALL                ATTR_PRESENT_START
 #define ATTR_PRESENT_CUSTOMSHOW         ATTR_PRESENT_START + 1
 #define ATTR_PRESENT_DIANAME            ATTR_PRESENT_START + 2
@@ -67,25 +52,8 @@
 #define ATTR_PRESENT_DISPLAY            ATTR_PRESENT_START + 15
 #define ATTR_PRESENT_END                ATTR_PRESENT_DISPLAY
 
-// transformation attributes
-#define ATTR_TRANSF_START       ATTR_PRESENT_END + 1
-#define ATTR_TRANSF_ANGLE       ATTR_TRANSF_START + 7
-#define ATTR_TRANSF_END         ATTR_TRANSF_ANGLE
-
-// grid attributes
-#define ATTR_GRID_START         ATTR_TRANSF_END + 1
-#define ATTR_GRID_ORIGIN_Y      ATTR_GRID_START + 8
-#define ATTR_GRID_END           ATTR_GRID_ORIGIN_Y
-
-// display attributes
-#define ATTR_DISPLAY_START              ATTR_GRID_END + 1
-#define ATTR_DISPLAY_ADJUSTLINES        ATTR_DISPLAY_START + 8
-#define ATTR_DISPLAY_END                ATTR_DISPLAY_ADJUSTLINES
-
-#define ATTR_TBX_DUMMY                  ATTR_DISPLAY_END + 1
-
 // animation attributes
-#define ATTR_ANIMATION_START            ATTR_TBX_DUMMY + 1
+#define ATTR_ANIMATION_START            ATTR_PRESENT_END + 1
 #define ATTR_ANIMATION_ACTIVE           ATTR_ANIMATION_START
 #define ATTR_ANIMATION_EFFECT           ATTR_ANIMATION_START + 1
 #define ATTR_ANIMATION_SPEED            ATTR_ANIMATION_START + 2
@@ -107,11 +75,7 @@
 #define ATTR_ACTION_PLAYFULL            ATTR_ACTION_START + 5
 #define ATTR_ACTION_END                 ATTR_ACTION_PLAYFULL
 
-#define ATTR_PRINTOPTIONS_START         ATTR_ACTION_END + 1
-#define ATTR_PRINTOPTIONS_PAGENAME      ATTR_PRINTOPTIONS_START + 5
-#define ATTR_PRINTOPTIONS_END           ATTR_PRINTOPTIONS_PAGENAME
-
-#define ATTR_COPY_START                 ATTR_PRINTOPTIONS_END + 1
+#define ATTR_COPY_START                 ATTR_ACTION_END + 1
 #define ATTR_COPY_NUMBER                ATTR_COPY_START
 #define ATTR_COPY_MOVE_X                ATTR_COPY_START + 1
 #define ATTR_COPY_MOVE_Y                ATTR_COPY_START + 2
@@ -143,24 +107,15 @@
 #define ATTR_OPTIONS_SCALE_HEIGHT       ATTR_OPTIONS_SCALE_START + 3
 #define ATTR_OPTIONS_SCALE_END          ATTR_OPTIONS_SCALE_HEIGHT
 
-#define ATTR_PUBLISH_START              ATTR_OPTIONS_SCALE_END + 1
-#define ATTR_PUBLISH_SLIDESOUND         ATTR_PUBLISH_START + 32
-#define ATTR_PUBLISH_END                ATTR_PUBLISH_SLIDESOUND
-
-#define ATTR_PRESLAYOUT_START           ATTR_PUBLISH_END + 1
+#define ATTR_PRESLAYOUT_START           ATTR_OPTIONS_SCALE_END + 1
 #define ATTR_PRESLAYOUT_NAME            ATTR_PRESLAYOUT_START
 #define ATTR_PRESLAYOUT_LOAD            ATTR_PRESLAYOUT_START + 1
 #define ATTR_PRESLAYOUT_MASTER_PAGE     ATTR_PRESLAYOUT_START + 2
 #define ATTR_PRESLAYOUT_CHECK_MASTERS   ATTR_PRESLAYOUT_START + 3
 #define ATTR_PRESLAYOUT_END             ATTR_PRESLAYOUT_CHECK_MASTERS
 
-// Pack & go attributes
-#define ATTR_PACKNGO_START              ATTR_PRESLAYOUT_END + 1
-#define ATTR_PACKNGO_MEDIUMSIZE         ATTR_PACKNGO_START + 3
-//      ATTR_PACKNGO_END                ATTR_PACKNGO_MEDIUMSIZE
-
 // paragraph numbering attributes
-#define ATTR_PARANUMBERING_START        ATTR_PACKNGO_MEDIUMSIZE + 1
+#define ATTR_PARANUMBERING_START        ATTR_PRESLAYOUT_END + 1
 #define ATTR_NUMBER_NEWSTART            ATTR_PARANUMBERING_START
 #define ATTR_NUMBER_NEWSTART_AT         ATTR_PARANUMBERING_START + 1
 #define ATTR_PARANUMBERING_END          ATTR_NUMBER_NEWSTART_AT


More information about the Libreoffice-commits mailing list