Seite wählen

Codequalität in JavaScript mit JSHint

von | Nov 3, 2011 | Linux, Development

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 ;-).

Eric Lippmann
Eric Lippmann
CTO

Eric kam während seines ersten Lehrjahres zu NETWAYS und hat seine Ausbildung bereits 2011 sehr erfolgreich abgeschlossen. Seit Beginn arbeitet er in der Softwareentwicklung und dort an den unterschiedlichen NETWAYS Open Source Lösungen, insbesondere inGraph und im Icinga Team an Icinga Web. Darüber hinaus zeichnet er für viele Kundenentwicklungen in der Finanz- und Automobilbranche verantwortlich.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Linux | Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...