Vollzeitblogger

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>

© 2023, by Jonathan M. Hethey