diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/fix_java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tools/fix_java b/tools/fix_java new file mode 100755 index 0000000..52b80b8 --- /dev/null +++ b/tools/fix_java @@ -0,0 +1,56 @@ +#! /bin/bash + +if [ $# -lt 1 ]; then + echo "missing PATH argument" + exit 1 +fi + +TOPDIR=$1 + +RESET="\033[0m" +RED="\033[0;31m" +BROWN="\033[0;33m" +GREEN="\033[0;32m" + +cd $TOPDIR +while read file; do + + # package + FIX=0 + CORRECT=$(echo $file | sed 's/\.\///; s/\/\+/\./g; s/\.\w\+.java//') + + N=$(cat $file | sed -ne '/^\s*package/p' | wc -l) + if [ $N -eq 0 ]; then + echo -e "$file : $BROWN missing package directive.$RED fix!$RESET"; + FIX=1 + elif [ $N -gt 1 ]; then + echo -e "$file : $BROWN more then 1 package directive.$RED fix!$RESET"; + FIX=1 + else + PACKAGE=$(cat $file | sed -ne '/^\s*package/ { s/^\s*package\s*//; s/\s*;\s*$//; p; q }') + if [ "$PACKAGE" != "$CORRECT" ]; then + echo -e "$file : $BROWN wrong package directive.$RED fix!$RESET"; + FIX=1 + fi + fi + + if [ $FIX -eq 1 ]; then + sed -i '/^\s*package/d' $file + sed -i "1ipackage $CORRECT;" $file + fi + + # import + IMPORTS=$(cat $file | sed -ne '/^\s*import/ {s/.*\.//;s/;//p}') + for class in $IMPORTS; do + N=$(cat $file | sed -ne "/import/b; /[^a-zA-Z]$class/ { /$class[^a-zA-Z]/p; /$class\s*$/p}" | wc -l) + if [ $N -eq 0 ]; then + RET=1 + echo -e "$file : $BROWN useless import $class $RED fix $RESET"; + sed -i "/^\s*import.*\.$class;/d" $file + fi + done + + # double empty lines + sed -i '/^$/N;/^\n$/D' $file + +done < <(find . -name "*.java") |