iToverDose/Software· 11 JUNI 2026 · 08:02

Licsniff: Lizenzrisiken lokal prüfen – ohne Anmeldung oder Netzwerk

Ein neues CLI-Tool namens licsniff scannt lokale Abhängigkeiten nach Lizenzrisiken und warnt automatisch vor GPL oder proprietären Lizenzen – ohne Cloud, ohne Anmeldung. Ideal für Entwicklerteams in regulierten Branchen.

DEV Community4 min0 Kommentare

Vor wenigen Monaten stellte uns ein Anwalt eine scheinbar einfache Frage: „Können Sie nachweisen, dass in diesem Produkt keine GPL-Lizenz enthalten ist?“ Die ehrliche Antwort lautete: „Wahrscheinlich schon – aber wir wissen es nicht sicher.“ Mit Tausenden transitiven Abhängigkeiten in Node.js- und Python-Projekten war eine manuelle Prüfung unmöglich. Die Suche nach einem passenden Tool endete ernüchternd: Die meisten Lösungen erforderten Registrierung, API-Tokens oder sogar die Übertragung von Paketmetadaten in die Cloud – dabei liegen die Lizenzinformationen bereits in den lokalen Projektdateien.

Um diese Lücke zu schließen, entwickelte ich licsniff, ein schlankes CLI-Tool, das genau das leistet: Es analysiert die Lizenzangaben direkt aus den package.json- oder METADATA-Dateien und klassifiziert sie in Risikostufen – ohne Internetverbindung, ohne Anmeldung und ohne zusätzliche Abhängigkeiten.

npx licsniff

Das Tool liefert eine übersichtliche Ausgabe, sortiert nach Risikostufen – von harmlosen MIT-Lizenzen bis zu gefährlichen GPL-3.0-Paketen. Besonders praktisch: Mit dem Flag --fail-on lässt sich die Prüfung direkt in CI-Pipelines integrieren, um unerwünschte Lizenzen automatisch zu blockieren.

Fünf Risikoklassen statt Textwüsten

Lizenztexte wie „GPL-3.0“ oder „MIT OR Apache-2.0“ sind für Entwickler ohne juristischen Hintergrund oft unverständlich. licsniff löst dieses Problem, indem es jede Lizenz in eine von fünf klaren Kategorien einordnet:

  • permissiv: Lizenzen wie MIT, ISC, BSD oder Apache-2.0 erlauben die freie Nutzung ohne Einschränkungen.
  • schwach-copyleft: Lizenzbedingungen wie LGPL oder MPL-2.0 erfordern zwar bestimmte Verpflichtungen (z. B. dynamische Verlinkung), aber keine vollständige Offenlegung des Quellcodes.
  • stark-copyleft: GPL- oder AGPL-Lizenzen können Unternehmen zwingen, ihren eigenen Code unter offenen Lizenzen zu veröffentlichen – ein kritisches Risiko für proprietäre Software.
  • proprietär: Pakete mit UNLICENSED oder ähnlichen Hinweisen dürfen nicht verwendet werden, ohne die Nutzungsbedingungen zu klären.
  • unbekannt: Fehlende oder unklare Lizenzangaben sind besonders gefährlich, da sie potenziell rechtliche Unsicherheiten bergen.

Diese Einteilung ermöglicht es Teams, schnell zu erkennen, welche Abhängigkeiten kritische Lizenzkonflikte verursachen können – und welche bedenkenlos genutzt werden dürfen.

SPDX-Ausdrücke richtig interpretieren

In der Praxis sind Lizenzangaben selten einheitlich. Entwickler stoßen auf komplexe Ausdrücke wie:

  • GPL-3.0 AND MIT
  • (MIT OR Apache-2.0)
  • GPLv3
  • Apache License 2.0

licsniff normalisiert diese Angaben und wertet die logischen Verknüpfungen korrekt aus:

  • Bei `OR`-Verknüpfungen wird die weniger restriktive Lizenz gewählt. Beispiel: (MIT OR GPL-3.0)permissiv, da MIT die freizügigere Option ist.
  • Bei `AND`-Verknüpfungen setzt sich die restriktivste Lizenz durch. Beispiel: GPL-3.0 AND MITstark-copyleft, da beide Lizenzen gleichzeitig gelten.

Diese Logik verhindert falsche Klassifizierungen, die zu riskanten Entscheidungen in der CI-Kette führen könnten.

CI-Integration mit --fail-on

Der größte Mehrwert von licsniff liegt in seiner Fähigkeit, automatisierte Warnsysteme zu unterstützen. Mit dem Befehl

licsniff --fail-on strong-copyleft

wird das Tool bei jedem Build ausgeführt und bricht ab, sobald eine Abhängigkeit der Risikoklasse stark-copyleft oder höher gefunden wird. Dies verhindert zuverlässig, dass GPL- oder proprietäre Pakete unbemerkt in ein geschlossenes Produkt gelangen – selbst als transitive Abhängigkeit.

Zusätzlich bietet licsniff Optionen wie --summary für eine kompakte Übersicht oder --json, um die Ergebnisse in maschinell lesbarer Form auszugeben. Mit jq lassen sich diese Daten weiterverarbeiten, etwa zur Erstellung von Berichten oder zur Integration in bestehende Compliance-Workflows.

Unterstützung für Node.js und Python

Da viele Projekte sowohl Node.js- als auch Python-Komponenten nutzen, wurde licsniff für beide Ökosysteme entwickelt. Die Tools sind zwar getrennt, teilen sich aber denselben Klassifizierungsalgorithmus – sodass eine Lizenz wie GPL-3.0 in beiden Versionen identisch bewertet wird.

  • Node.js: Wird über npx gestartet und durchsucht node_modules nach package.json-Dateien. Es erkennt moderne SPDX-Ausdrücke wie MIT OR Apache-2.0 und klassifiziert sie korrekt.
  • Python: Nutzt pipx run licsniff, um die Paketmetadaten in site-packages zu analysieren. Besonders neuere Python-Pakete (PEP 639) enthalten die Lizenzangaben im Feld License-Expression, das ebenfalls unterstützt wird.

Beide Versionen kommen ohne externe Abhängigkeiten aus und arbeiten vollständig offline – ideal für Umgebungen mit eingeschränktem Netzwerkzugriff.

Architektur: Einfache Logik, maximale Zuverlässigkeit

Der Kern von licsniff besteht aus einer einzigen Funktion, die Lizenztexte in Risikostufen übersetzt:

def classify_license(license_text: str) -> dict:
    # Normalisiert den Lizenztext und ordnet ihn einer Risikoklasse zu
    ...

Diese Funktion hat keine Seiteneffekte, benötigt weder Netzwerk noch Dateizugriffe und wird von beiden Versionen des Tools genutzt. Dadurch wird sichergestellt, dass die Klassifizierung in Node.js und Python bitgenau identisch bleibt. Die CLI-Komponenten dienen lediglich als Wrapper, die die Funktion mit lokalen Projektdateien füttern.

Fazit: Lizenzprüfung ohne Kompromisse

licsniff beweist, dass eine gründliche Lizenzprüfung keine komplexen Cloud-Dienste oder teuren Tools erfordert. Mit seiner Offline-Funktionalität, der klaren Risikoklassifizierung und der einfachen CI-Integration ist es ein wertvolles Werkzeug für Entwicklerteams, die ihre Software rechtlich absichern möchten.

Probieren Sie es aus und teilen Sie uns mit, ob licsniff eine Lizenzangabe falsch einordnet – wir freuen uns über Feedback und ungewöhnliche Lizenztexte aus Ihren eigenen Projekten. Wie überprüfen Sie aktuell die Lizenzen Ihrer Abhängigkeiten – oder verlassen Sie sich darauf, dass niemand danach fragt?

KI-Zusammenfassung

Kapalı kaynak kodlu projelerinizdeki GPL ve diğer lisans risklerini yerel olarak tarayan licsniff aracıyla, bağımlılıklarınızın yasal uyumluluğunu anında kontrol edin. Net, hızlı ve kullanımı kolay çözüm.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #O18LX2

0 / 1200 ZEICHEN

Menschen-Check

8 + 9 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.