#! /bin/bash if [ $# -lt 1 ]; then echo "missing PATH argument" exit 1 fi TOPDIR=$1 ERRORS=.check_package.err RESET="\033[0m" RED="\033[0;31m" BROWN="\033[0;33m" GREEN="\033[0;32m" find $TOPDIR -name \*.java | while read file; do relpath=${file#${TOPDIR}} CORRECT=$(echo $relpath | sed 's/\.\///; s/\/\+/\./g; s/\.\w\+.java//') N=$(cat $file | sed -n '/^\s*package /p ' | wc -l) if [ $N -gt 1 ]; then echo -e "$file : $BROWN more then 1 package directive$RESET"; touch $ERRORS continue fi PACKAGE=$(cat $file | sed -n '/^\s*package /p ') if [ -z "$PACKAGE" ]; then echo -e "$file : $BROWN missing package directive$RESET"; touch $ERRORS continue fi PACKAGE=$(echo "$PACKAGE" | sed 's/ *package *//; s/ *; *$//;') if [ "$PACKAGE" != "${CORRECT}" ]; then echo -e "$file : $RED$PACKAGE$RESET -> $GREEN$CORRECT$RESET"; touch $ERRORS fi for IMPORT in $(cat $file | sed -n 's/^\s*import\s\+.*\.\(.*\);/\1/p'); do cat $file | grep $IMPORT | grep -qv import if [ $? -ne 0 ]; then echo -e "$file : import $RED$IMPORT$RESET might be useless"; fi done done if [ -r "$ERRORS" ]; then rm $ERRORS exit 1 fi