check-build Node.js Code Qualitätskontrolle
January 17, 2015
Mit check-build lässt sich node.js code auf Sicherheitslücken, Wiederholungen und andere problematische Elemente prüfen und das ganz automatisch. Das tool kombiniert verschiedene Module um deren Funktionen kombiniert auszuführen.
Ein schönes Zitat aus einer Adventures in Angular Folge war:
so you have to automate every step of your process. You don’t ever want to depend on a human actually a part of it. And Gulp and Grunt make those things easy. So I agree with what John said: “If you are doing it manually, you are working way too hard.”
-Adventures in Angular, Folge 006: Build Processes
Dinge die sich automatisch erledigen lassen, sollten auch automatisch geschehen, so vergisst man auch nicht noch vor dem commit oder push die Abhängigkeiten oder Codequalität zu prüfen. Mit check-build werden uns als Entwicklern ein paar Schritte abgenommen.
check-build enthält die folgenden Komponenten:
- JSHint
- JSInspect sucht nach ähnlichem Code, der wahrscheinlich eher in eine Funktion gehört als mehrfach im Projekt aufzutauchen.
- buddy.js durchsucht die Codebasis nach Zahlen, die nicht einer Variable zugewiesen sind und daher auch nicht unbedingt gut dokumentiert sind. Beispiel: Mehrwertsteuer, die einfach mit
* 1.19
ausgedrückt wird - JSCS steht für JavaScript Code Style und kann nach verschiedenen Presets oder selbst geschriebenen Regeln ein Projekt validieren
- NSP gehört dem Node Security Project an und testet NPM module und Code auf potenzielle Sicherheitslücken
- David geht die Abhängigkeiten in der
package.js
Datei durch und schlägt Alarm wenn eine Abhängigkeit veraltet ist
check-build mit git pre-commit hook ausführen
Um die Tests automatisch vor einem git-commit laufen zu lassen, schreibt man einfach check-build
in die .git/hooks/pre-commit
datei in einem Git Repository.
Beispieloutput (Auszug):
<code>[nsp]
No vulnerable modules found
[david]
gulp-image-resize Required: ^0.5.0 Stable: 0.6.0 Latest: 0.6.0
Checkbuild module "david" failed.
[Error: At least one dependency needs to be updated]
</code>