Um die Qualität von eigenem oder fremden Code zu überprüfen, gibt es für nahezu jede Sprache entsprechende Tools. Validierung von JavaScript ist zum Beispiel mit Hilfe von JSHint möglich, welches online oder offline eingesetzt werden kann. Für den lokalen Gebrauch werden JSHint und eine JavaScript-Implementation wie Rhino benötigt. Sind beide in einem Ordner entpackt, kann mit der Überprüfung begonnen werden.
Ein Beispielaufruf anhand einer Testdatei, bemängelt zwei Fehler, welche häufig auftreten und zum Beispiel den IE7 in die Knie zwingen:
# cat test.js
var hash = {
a: 'b',
}
# java -jar js.jar env/rhino.js test.js
Extra comma. (line: 2, character: 11)
> a: 'b',
Missing semicolon. (line: 3, character: 2)
> }
Um automatisch fehlende Semikolons hinzuzufügen und überflüssige Kommas zu entfernen, kann folgendes Skript eingesetzt werden:
#!/bin/sh
test -f $1 && js=$1 ||
js=`find $1 -type f -name '*.js'`
IFS='
'
for file in $js
do
for comma in `java -jar js.jar env/rhino.js $file | grep 'Extra comma.'`
do
line=`echo $comma | awk {'print $4'} | cut -f 1 -d ,`
column=`echo $comma | awk {'print $6'} | cut -f 1 -d \)`
column=`echo "$column-1" | bc`
sed -ri "$line ~ s/^(.{$column}),/\1/" $file
done
for semicolon in `java -jar js.jar env/rhino.js $file | grep 'Missing semicolon.'`
do
line=`echo $semicolon | awk {'print $4'} | cut -f 1 -d ,`
column=`echo $semicolon | awk {'print $6'} | cut -f 1 -d \)`
column=`echo "$column-1" | bc`
sed -ri "$line ~ s/^(.{$column})/\1;/" $file
done
done
unset IFS
Ein bisschen Arbeit bleibt einem natürlich selbst überlassen, denn JSHint meckert bei vielen weiteren Fehlern und Verstößen gegen gewisse Guidelines ;-).
0 Comments