mktemp; Tabs entfernt; Env-var $MUDLIB persistent
Kleinere Schoenheitsoperationen:
- Temporaere Dateien werden jetzt via mktemp erstellt
- Tabs wurden durch vier Spaces ersetzt
- bei der Umgebungsvariable $MUDLIB wird vorher geprueft, ob diese
bereits existiert und nur bei Nicht-Existenz durch ../mudlib ersetzt.
Change-Id: I38b7c1104de6d59f7f1b1380b1082e1cb5cdc958
diff --git a/check b/check
index 8af3bf3..9869965 100755
--- a/check
+++ b/check
@@ -12,7 +12,9 @@
HEADERFILES="${CHECKERHOME}/HEADERFILES"
#export LPCFILES="${HEADERFILES} ${CODEFILES}"
LPCFILES="${CHECKERHOME}/LPCFILES"
-MUDLIB="../mudlib"
+# wenn $MUDLIB bereits als Umgebungsvariable existiert, muss man das nicht
+# ueberschreiben
+[[-z $MUDLIB]] && MUDLIB="../mudlib"
LOGS="${CHECKERHOME}/logs"
LEVEL1="change_required"
@@ -20,6 +22,9 @@
LEVEL5="please_check"
LEVEL10="cosmetics"
+CHECKTMP=$(mktemp --suffix=lpccheck) || exit
+CHECKTMP2=$(mktemp --suffix=lpccheck) || exit
+
echo -ne "LPC-Source Checker V0.3 (2008-01-09)\n\n"
usage() {
@@ -30,36 +35,36 @@
# Parameter pruefen, ansonsten usage ausgeben
if [ -z ${1} ] || [ -z ${2} ]
then
- usage
+ usage
fi
# gucken ob das Logverzeichnis da ist, wenn nein, dann anlegen
if [ ! -d ${LOGS} ]
then
- mkdir -p ${LOGS}
+ mkdir -p ${LOGS}
fi
# rudimentaerer check ob die Mudlib da liegt, wo ${MUDLIB} hinzeigt
if [ ! -d ${MUDLIB} ]
then
- echo -ne "No mudlib found in ${MUDLIB}\n"
- exit
+ echo -ne "No mudlib found in ${MUDLIB}\n"
+ exit
fi
# alten Kram entsorgen
if [ -f ${CODEFILES} ]
then
- rm ${CODEFILES}
+ rm ${CODEFILES}
fi
if [ -f ${HEADERFILES} ]
then
- rm ${HEADERFILES}
+ rm ${HEADERFILES}
fi
if [ -f ${LPCFILES} ]
then
- rm ${LPCFILES}
+ rm ${LPCFILES}
fi
echo -ne "Checking the MorgenGrauen Mudlib in ${MUDLIB}\n"
@@ -85,139 +90,136 @@
echo -ne "\n\nPruefe auf Umlaute...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn '[üöäÜÖÄß]' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn '[üöäÜÖÄß]' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# lambda()
echo -ne "\n\nPruefe auf lambda()...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn 'lambda(' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn 'lambda(' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Pfade in /players/
echo -ne "\n\nPruefe auf Pfade in /players/...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn '/players/' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn '/players/' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# fehlende #pragma strong_types/strict_types
echo -ne "\n\nFiles ohne #pragma strong_types oder strict_types...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -L '#pragma.\(strong\|strict\)_types' $line | sort \
- >> ${LOGS}/${2}.${LEVEL1}
+ grep -L '#pragma.\(strong\|strict\)_types' $line | sort \
+ >> ${LOGS}/${2}.${LEVEL1}
done < ${CODEFILES}
# direkte Verwendung von do_damage()
echo -ne "\n\nPruefe auf direkte Verwendung von do_damage()...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn 'do_damage(' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn 'do_damage(' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Unerwuenschte oder obsolete lfuns
echo -ne "\n\nPruefe auf unerwuenschte oder obsolete lfuns...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn -f ${CHECKERLIB}/bad_lfun.list $line >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn -f ${CHECKERLIB}/bad_lfun.list $line >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Unerwuenschte oder obsolete efuns
echo -ne "\n\nPruefe auf unerwuenschte oder obsolete efuns...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn -f ${CHECKERLIB}/bad_efun.list $line >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn -f ${CHECKERLIB}/bad_efun.list $line >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Unerwuenschte oder obsolete Properties
echo -ne "\n\nPruefe auf unerwuenschte oder obsolete Properties...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn -f ${CHECKERLIB}/bad_prop.list $line >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn -f ${CHECKERLIB}/bad_prop.list $line >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Unerwuenschte Events
echo -ne "\n\nPruefe auf unerwuenschte Eventnamen...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn -f ${CHECKERLIB}/bad_events.list $line >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn -f ${CHECKERLIB}/bad_events.list $line >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Keine clones von /std/thing
echo -ne "\n\nPruefe auf Clones von /std/thing...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn 'clone_object(.*/std/thing.*)' $line | cut -d : -f 1-2 \
- >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn 'clone_object(.*/std/thing.*)' $line | cut -d : -f 1-2 \
+ >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# ueberschriebenes move()
echo -ne "\n\nPruefe auf ueberschriebenes move() (deprecated)...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn 'int.*move(.*mixed.*int.*)' $line | cut -d : -f 1-2 \
- >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn 'int.*move(.*mixed.*int.*)' $line | cut -d : -f 1-2 \
+ >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# wird geerbtes PreventMove gerufen?
echo -ne "\n\nUeberschriebenes PreventMove() ohne geerbetes zu rufen...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep 'PreventMove(.*object.*object.*int.*)' $line > ${CHECKERHOME}/check.tmp
- grep -L '::PreventMove(' $line > ${CHECKERHOME}/check.tmp2
+ grep 'PreventMove(.*object.*object.*int.*)' $line > $CHECKTMP
+ grep -L '::PreventMove(' $line > $CHECKTMP2
done < ${LPCFILES}
# nur Zeilen ausgeben, die nicht im 2. File vorkommen
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp | \
- tee -a ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP | \
+ tee -a ${LOGS}/${2}.${LEVEL1}
echo -ne "\n\nUeberschriebenes init() ohne geerbtes zu rufen...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep 'init(\(object.*\)\?)' $line > ${CHECKERHOME}/check.tmp
- grep -L '::init(' $line > ${CHECKERHOME}/check.tmp2
+ grep 'init(\(object.*\)\?)' $line > $CHECKTMP
+ grep -L '::init(' $line > $CHECKTMP2
done < ${LPCFILES}
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp \
- >> ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP \
+ >> ${LOGS}/${2}.${LEVEL1}
echo -ne "\n\nUeberschriebenes NotifyMove() ohne geerbetes zu rufen...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep 'NotifyMove(.*object.*object.*int.*)' $line > ${CHECKERHOME}/check.tmp
- grep -L '::NotifyMove(' $line > ${CHECKERHOME}/check.tmp2
+ grep 'NotifyMove(.*object.*object.*int.*)' $line > $CHECKTMP
+ grep -L '::NotifyMove(' $line > $CHECKTMP2
done < ${LPCFILES}
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp \
- >> ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP \
+ >> ${LOGS}/${2}.${LEVEL1}
# call_other(x, "???") ist obsolet
echo -ne "\n\nPruefe auf call_other(x, "???") (obsolet)...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn 'call_other(.*???.*)' $line | cut -d : -f 1-2 \
- >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn 'call_other(.*???.*)' $line | cut -d : -f 1-2 \
+ >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# Alte Syntax der Inline-Closures
echo -ne "\n\nPruefe auf obsolete Inline-Closures ( (: :) )...\n" | \
- tee -a ${LOGS}/${2}.${LEVEL1}
+ tee -a ${LOGS}/${2}.${LEVEL1}
while read line
do
- grep -Hn '(: ' $line | cut -d : -f 1-2 \
- >> ${LOGS}/${2}.${LEVEL1}
+ grep -Hn '(: ' $line | cut -d : -f 1-2 \
+ >> ${LOGS}/${2}.${LEVEL1}
done < ${LPCFILES}
# LEVEL 2 CHECKS
@@ -225,14 +227,14 @@
echo -ne "\n\nPruefe auf Tabulatoren...\n" | tee -a ${LOGS}/${2}.${LEVEL2}
while read line
do
- grep -Hn $'\t' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
+ grep -Hn $'\t' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
done < ${LPCFILES}
# Zeilen > 78 Zeichen
echo -ne "\n\nPruefe auf Zeilen > 78 Zeichen...\n" | tee -a ${LOGS}/${2}.${LEVEL2}
while read line
do
- grep -Hn '.\{79,\}' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
+ grep -Hn '.\{79,\}' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
done < ${LPCFILES}
# LEVEL 5 CHECKS
@@ -240,16 +242,16 @@
echo -ne "\n\nHeader (*.h) mit #pragmas...\n" | tee -a ${LOGS}/${2}.${LEVEL5}
while read line
do
- grep -l '#pragma' $line >> ${LOGS}/${2}.${LEVEL5}
+ grep -l '#pragma' $line >> ${LOGS}/${2}.${LEVEL5}
done < ${HEADERFILES}
# efuns, Verwendung beachten
echo -ne "\n\nPruefe auf efuns, deren Verwendung beobachtet werden sollte...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL5}
+ tee -a ${LOGS}/${2}.${LEVEL5}
while read line
do
- grep -Hn -f ${CHECKERLIB}/warn_efun.list $line \
- >> ${LOGS}/${2}.${LEVEL5}
+ grep -Hn -f ${CHECKERLIB}/warn_efun.list $line \
+ >> ${LOGS}/${2}.${LEVEL5}
done < ${LPCFILES}
# Properties, Verwendung beachten
@@ -257,30 +259,34 @@
sollte...\n" | tee -a ${LOGS}/${2}.${LEVEL5}
while read line
do
- grep -EHn -f ${CHECKERLIB}/warn_prop.list $line \
- >> ${LOGS}/${2}.${LEVEL5}
+ grep -EHn -f ${CHECKERLIB}/warn_prop.list $line \
+ >> ${LOGS}/${2}.${LEVEL5}
done < ${LPCFILES}
-
+
# Pruefung auf static -> protected
echo -ne "\n\nPruefe auf 'static' (-> 'protected')...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL5}
+ tee -a ${LOGS}/${2}.${LEVEL5}
while read line
do
- grep -Hn 'static' $line >> ${LOGS}/${2}.${LEVEL5}
+ grep -Hn 'static' $line >> ${LOGS}/${2}.${LEVEL5}
done < ${LPCFILES}
# LEVEL 10 CHECKS
# Alte Rechtschreibung rules
echo -ne "\n\nKleingeschriebenes Du/Dir/Dich...\n" |\
- tee -a ${LOGS}/${2}.${LEVEL10}
+ tee -a ${LOGS}/${2}.${LEVEL10}
while read line
do
- grep -Hn ' \(du\|dich\|dir\) ' $line | cut -d : -f 1-2 | sort | \
- uniq >> ${LOGS}/${2}.${LEVEL10}
+ grep -Hn ' \(du\|dich\|dir\) ' $line | cut -d : -f 1-2 | sort | \
+ uniq >> ${LOGS}/${2}.${LEVEL10}
done < ${LPCFILES}
# Pfadnamen bereinigen
sed -i -e 's#.//#/#g' ${LOGS}/${2}.*
echo -ne "\nCheck finished!\n"
+
+# cleanup
+rm $CHECKTMP
+rm $CHECKTMP2