summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-12-01 11:33:12 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-12-01 12:41:58 +0100
commitaf5f86b2c1d895803ba79136609417c151100ec1 (patch)
treedd5ceb549074e3fa1126fc8d2859b9976a257c67
parent324af6236800eaa540f0d32484c05e82e7aaf317 (diff)
Related: tdf#100226 unused hrc defines are the same as hxx defines now
since the gettextization, so they can be treated the same as normal ones with something like find-unused-defines.sh Change-Id: I2915b76fc79ff5c0eb0dc2b35b1c0421e86462da Reviewed-on: https://gerrit.libreoffice.org/45653 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rwxr-xr-xbin/find-unused-defines-in-hrc-files.py158
1 files changed, 0 insertions, 158 deletions
diff --git a/bin/find-unused-defines-in-hrc-files.py b/bin/find-unused-defines-in-hrc-files.py
deleted file mode 100755
index f51b8d0fcfd6..000000000000
--- a/bin/find-unused-defines-in-hrc-files.py
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/python
-
-# Search for unused constants in .hrc files.
-#
-# 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
-#
-
-import subprocess
-import sys
-
-exclusionSet = set([
- # List of RID constants where we compute a value using a base before calling one of the RESSTR methods
- # Found with: git grep -P 'RID_\w+\s*\+' -- :/ ':!*.hrc' ':!*.src' ':!*.java' ':!*.py' ':!*.xba'
- "RID_SVXSTR_KEY_",
- "RID_UPDATE_BUBBLE_TEXT_",
- "RID_UPDATE_BUBBLE_T_TEXT_",
- "RID_SVXSTR_TBLAFMT_",
- "RID_BMP_CONTENT_",
- "RID_DROPMODE_",
- "RID_BMP_LEVEL",
- "RID_SVXSTR_BULLET_DESCRIPTION",
- "RID_SVXSTR_SINGLENUM_DESCRIPTION",
- "RID_SVXSTR_OUTLINENUM_DESCRIPTION",
- "RID_SVXSTR_RULER_",
- "RID_GALLERYSTR_THEME_",
- "RID_SVXSTR_BULLET_DESCRIPTION",
- "RID_SVXSTR_SINGLENUM_DESCRIPTION",
- "RID_SVXSTR_OUTLINENUM_DESCRIPTION",
- # doing some weird stuff in svx/source/unodraw/unoprov.cxx involving mapping of UNO api names to translated names and back again
- "RID_SVXSTR_GRDT",
- "RID_SVXSTR_HATCH",
- "RID_SVXSTR_BMP",
- "RID_SVXSTR_DASH",
- "RID_SVXSTR_LEND",
- "RID_SVXSTR_TRASNGR",
- # other places doing calculations
- "RID_SVXSTR_DEPTH",
- "RID_SUBSETSTR_",
- "ANALYSIS_",
- "FLD_DOCINFO_CHANGE",
- "FLD_EU_",
- "FLD_INPUT_",
- "FLD_PAGEREF_",
- "FLD_STAT_",
- "FMT_AUTHOR_",
- "FMT_CHAPTER_",
- "FMT_DBFLD_",
- "FMT_FF_",
- "FMT_GETVAR_",
- "FMT_MARK_",
- "FMT_REF_",
- "FMT_SETVAR_",
- "STR_AUTH_FIELD_ADDRESS_",
- "STR_AUTH_TYPE_",
- "STR_AUTOFMTREDL_",
- "STR_CONTENT_TYPE_",
- "STR_UPDATE_ALL",
- "STR_UPDATE_INDEX",
- "STR_UPDATE_LINK",
- "BMP_PLACEHOLDER_",
- "STR_RPT_HELP_",
- "STR_TEMPLATE_NAME",
- "UID_BRWEVT_",
- "HID_EVT_",
- "HID_PROP_",
- "STR_VOBJ_MODE_",
- "STR_COND_",
- "SCSTR_CONTENT_",
- "DATE_FUNCDESC_",
- "DATE_FUNCNAME_",
- "DATE_DEFFUNCNAME_",
- "PRICING_DEFFUNCNAME_",
- "PRICING_FUNCDESC_",
- "PRICING_FUNCNAME_",
- "STR_ItemValCAPTION",
- "STR_ItemValCIRC",
- "STR_ItemValEDGE",
- "STR_ItemValFITTOSIZE",
- "STR_ItemValMEASURE_",
- "STR_ItemValMEASURETEXT_",
- "STR_ItemValTEXTANI_",
- "STR_ItemValTEXTHADJ",
- "STR_ItemValTEXTVADJ",
- ])
-
-
-def in_exclusion_set( a ):
- for f in exclusionSet:
- if a.startswith(f):
- return True;
- return False;
-
-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)
- idName = line[idx1+8 : idx2].strip()
- # the various _START and _END constants are normally unused outside of the .hrc and .src files, and that's fine
- if idName.endswith("_START"): continue
- if idName.endswith("_BEGIN"): continue
- if idName.endswith("_END"): continue
- if idName.startswith("RID_"):
- if idName == "RID_SVX_FIRSTFREE": continue
- if in_exclusion_set(idName): continue
- # search for the constant
- b = subprocess.Popen(["git", "grep", "-w", idName], stdout=subprocess.PIPE)
- found_reason_to_exclude = False
- with b.stdout as txt2:
- cnt = 0
- for line2 in txt2:
- line2 = line2.strip() # otherwise the comparisons below will not work
- # check if we found one in actual code
- if idName.startswith("SID_"):
- if not ".hrc:" in line2 and not ".src:" in line2 and not ".sdi:" in line2: found_reason_to_exclude = True
- else:
- if not ".hrc:" in line2 and not ".src:" in line2: found_reason_to_exclude = True
- if idName.startswith("RID_"):
- # is the constant being used as an identifier by entries in .src files?
- if ".src:" in line2 and "Identifier = " in line2: found_reason_to_exclude = True
- # is the constant being used by the property controller extension or reportdesigner inspection,
- # which use macros to declare constants, hiding them from a search
- if "extensions/source/propctrlr" in line2: found_reason_to_exclude = True
- if "reportdesign/source/ui/inspection/inspection.src" in line2: found_reason_to_exclude = True
- if idName.startswith("HID_"):
- # is the constant being used as an identifier by entries in .src files
- if ".src:" in line2 and "HelpId = " in line2: found_reason_to_exclude = True
- # is it being used as a constant in an ItemList in .src files?
- if ".src:" in line2 and (";> ;" in line2 or "; >;" in line2): found_reason_to_exclude = True
- # these are used in calculations in other .hrc files
- if "sw/inc/rcid.hrc:" in line2: found_reason_to_exclude = True
- # calculations
- if "sw/source/uibase/inc/ribbar.hrc:" in line2 and "ST_" in idName: found_reason_to_exclude = True
- if "sw/source/uibase/inc/ribbar.hrc:" in line2 and "STR_IMGBTN_" in idName: found_reason_to_exclude = True
- if "sw/source/core/undo/undo.hrc:" in line2: found_reason_to_exclude = True
- if "sw/inc/poolfmt.hrc:" in line2: found_reason_to_exclude = True
- # not sure about these, looks suspicious
- if "sd/source/ui/app/strings.src:" in line2 and idName.endswith("_TOOLBOX"): found_reason_to_exclude = True
- # used via a macro that hides them from search
- if "dbaccess/" in line2 and idName.startswith("PROPERTY_ID_"): found_reason_to_exclude = True
- if "reportdesign/" in line2 and idName.startswith("HID_RPT_PROP_"): found_reason_to_exclude = True
- if "reportdesign/" in line2 and idName.startswith("RID_STR_"): found_reason_to_exclude = True
- if "forms/" in line2 and idName.startswith("PROPERTY_"): found_reason_to_exclude = True
- if "svx/source/tbxctrls/extrusioncontrols.hrc:" in line2 and idName.startswith("DIRECTION_"): found_reason_to_exclude = True
- if "svx/source/tbxctrls/extrusioncontrols.hrc:" in line2 and idName.startswith("FROM_"): found_reason_to_exclude = True
- # if we see more than a few lines then it's probably one of the BASE/START/BEGIN things
- cnt = cnt + 1
- if cnt > 4: 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", idName])
-