Ucslint-Dokumentation

From Univention Wiki

Jump to: navigation, search

ucslint - Univention Package Checker

Beschreibung

Das Kommando ucslint analysiert Univention Quellcode(-Pakete) und prüft diese(n) auf Fehler und Unzulänglichkeiten. Es enthält u.A. diverse Checks für Konfigurationsdateien von univention-spezifischen Mechanismen wie z.B. Univention Configuration Registry.

Während des Starts lädt ucslint diverse Python-Module. Jedes Modul implementiert einen oder mehrere Checks und jeder Check adressiert einen speziellen Aspekt des Quellcodes, der z.B. während des Paketbaus fehlschlagen könnte. Wurde ein Fehler gefunden, wird eine entsprechende Meldung von ucslint ausgegeben.

Jeder Check wird durch eine Check-Id identifiziert (z.B. 0004-5), die sich aus der Modulnummer (z.B. 0004) und der modulinternen Checknummer (z.B. 5) zusammensetzt. Jeder Check wird zusätzlich in eine von vier Kategorien eingeteilt:

  • Error (E): Wenn ein Check dieser Kategorie fehlschlägt, kann das Quellcodepaket nicht übersetzt werden oder es wird später zur Laufzeit zu einem Fehlverhalten kommen.
  • Warning (W): Diese Kategorie zeigt mögliche Probleme an. Ein Fehler muss nicht vorliegen.
  • Information (I): Checks dieses Typs geben einige Informationen über den Quellcode zurück.
  • Style (S): Einige Programmcode-Konstrukte funktionieren in der aktuellen Version, können jedoch bei Updates oder während des Refactorings zu Problemen führen. Checks dieser Kategorie versuchen auf solche Stellen hinzuweisen.

Beispiel für eine ucslint-Meldung:

E:0008-1: ucslint/0008-Translations.py:70: file contains construct like _("foo %s bar" % var)

Aufruf

ucslint sollte im Wurzelverzeichnis des Quellcode-Pakets aufgerufen werden. Eine Angabe von weiteren Parametern ist dann in der Regel nicht notwendig. Spezielle Parameter für ucslint können der manpage von ucslint entnommen werden.

Exitcode

ucslint kann während des Paketbaus verwendet werden, um automatisch schwere Fehler zu identifizieren. Anhand des Exitcodes kann erkannt werden, ob ein Check der Kategorie Error eine Meldung ausgegeben hat (Exitcode 1) oder nicht (Exitcode 0). Über Kommandozeilenparameter (siehe manpage) kann ucslint auch dazu veranlasst werden, bei Meldungen anderer Kategorien einen entsprechenden Exitcode zurückzugeben.

debian/ucslint.overrides

In einigen Fällen beschwert sich ucslint über Programmcode, der keinen realen Fehler enthält. Sofern man sicher ist, dass kein Fehler enthalten ist, kann eine Konfigurationsdatei (debian/ucslint.overrides) im Quellcode-Paket abgelegt werden, die ucslint dazu veranlasst, eine spezielle Meldung zu ignorieren. Jede Zeile dieser Datei definiert eine Ausnahme und besteht aus Check-Id sowie einer optionalen Positionsangabe (Dateiname, Zeile, Spalte).

Beispiel für debian/ucslint.overrides:

0010-2: conffiles/etc/init.d/samba
0002-3: debian/postinst:10
0009-5: src/haskey.py:9:6
0001-6:

Die erste Zeile ignoriert Meldungen des Checks 0010-2 für die gesamte Datei conffiles/etc/init.d/samba. Die Pfadangaben sind relativ zur Wurzel des Quellpakets anzugeben. In der zweiten Zeile wird speziell eine Ausnahme für den Check mit der Id 0002-3 definiert, sofern dieser eine Meldung für die Datei debian/postinst in Zeile 10 ausgeben möchte. Einige Checks erfordern zusätzlich noch die Angabe einer Spaltenangabe, wie es in der dritten Zeile des Beispiels gezeigt wird. Soll ein Check für das gesamte Quellcode-Paket deaktiviert werden, kann wie der letzten Zeile auf die Angabe eines Dateinamens verzichtet werden.

Personal tools