Developer Talk: Finding Unused Message Keys

Ben Wolfe is a core developer for OpenMRS. This information has been cross-posted from his blog.

Over time the messages in our Spring message.properties files grow stale. When a developer updates/changes code he/she doesn’t necessarily go to the messages.properties and remove all the keys that they removed from code. This has no detrimental effect on code, it just means that when translating into a new language the translator is potentially more work than they need to.

I wrote this quick shell script to loop over the file and do a recursive grep for that key. The key is considered “used” if it exists in the current directory with quotes around it (single or double). This WILL NOT find keys if they are only used programmatically. (e.g. VAR + “.started”)

#!/bin/sh
# Loops over all the keys in the given messages.properties file
# and looks in the current directory for the string in quotes.
# Results are printed to stdout
#
# use: (from the “web” dir in openmrs)
# sh ./findunusedmessages.sh WEB-INF/messages.properties
propfile=$1
props=`awk -F= ‘{print $1}’ $propfile`
count=0
total=0
echo “These property keys were not found in the code base:”
for prop in $props
do
#echo “Looking for property: $prop”
if [ ! -z "$prop" ];
then
total=`expr $total + 1`
output=`grep –exclude-dir=”.svn” -re “['"]$prop['"]” *`
if [ -z "$output" ];
then
echo “$prop”
count=`expr $count + 1`
fi
fi
done
echo “done! Found $count possibly uneeded message keys in $propfile (out of $total total keys)”

If you’re interested in helping translate OpenMRS or in volunteering your time and talent in other ways, you should read more about getting involved here. Download the script file from Ben’s blog: findunusedmessages.sh

No comments yet.

Leave a Reply