Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cflow(1)

cxref(1)

lex(1)

make(1)

yacc(1)

lint(1)                                                             lint(1)

NAME
     lint - C-Programme prüfen

SYNTAX
     lint [Option...] Datei...

BESCHREIBUNG
     lint ermittelt Merkmale der C-Programmdateien, die möglicherweise Feh-
     ler darstellen, nicht portabel oder nutzlos sind. Auch prüft es die
     Typbenutzung strenger als der Compiler. lint gibt Warnungen und Feh-
     lermeldungen aus. Zu den Punkten, die geprüft werden, gehören nicht
     erreichbarer Code, Schleifen, in die gesprungen wird, automatische
     Variablen, die erklärt, jedoch nicht verwendet werden, und logische
     Ausdrücke mit konstantem Wert. lint überprüft Funktionen, die Werte an
     einigen Stellen zurückgeben und an anderen nicht, Funktionen, die mit
     variierender Argumentenanzahl oder verschiedenen Argument-Typen aufge-
     rufen werden, sowie Funktionen, deren Werte nicht verwendet werden
     oder deren Werte zwar verwendet, jedoch nicht zurückgegeben werden.

     Argumente, deren Namen mit .c enden, werden als C-Quelldateien angese-
     hen. Argumente, deren Namen mit .ln enden, werden als das Ergebnis
     eines früheren Aufrufs von lint verstanden, bei dem entweder die
     Option -c oder -o verwendet wurde. Die .ln-Dateien sind ähnlich den
     .o-(Objekt-)Dateien, die vom Kommando cc(1) erstellt werden, wenn eine
     Datei .c als Eingabe verwendet wird. Vor Dateien mit anderen Zusätzen
     wird gewarnt: diese Dateien werden ignoriert.

     lint nimmt alle Dateien .c, .ln und llib-lx.ln (angegeben durch die
     Option -l x) und verarbeitet sie in der Reihenfolge, wie sie in der
     Aufrufzeile erscheinen. Standardmäßig hängt lint die Standard-C-Lint-
     Bibliothek llib-lc.ln an das Ende der Dateiliste an. Bei Anwendung der
     Option -c werden die Dateien .ln und llib-lx.ln ignoriert. Wird die
     Option -c nicht verwendet, prüft der zweite Durchgang von lint die
     Dateiliste .ln und llib-lx.ln auf gegenseitige Kompatibilität.

OPTIONEN
     Die folgenden Optionen werden zur Unterdrückung bestimmter Arten von
     Reklamationen benutzt:

     -a   Reklamationen bei Zuweisungen von long-Werten an Variablen unter-
          drücken, die nicht long sind.

     -b   Reklamationen bei break-Anweisungen unterdrücken, die nicht
          erreicht werden können.

     -h   Keine Heuristik-Tests durchführen, die versuchen, Fehler zu ver-
          meiden, den Stil zu verbessern und den Aufwand zu reduzieren.

     -m   Reklamationen bei externen Symbolen unterdrücken, die als static
          deklariert sein könnten.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

lint(1)                                                             lint(1)

     -u   Reklamationen bei Funktionen und externen Variablen unterdrücken,
          die verwendet und nicht definiert oder definiert und nicht ver-
          wendet wurden. Diese Option ist für das Ausführen von lint in
          einer Untergruppe von Dateien eines größeren Programms geeignet.

     -v   Reklamationen bei unbenutzten Argumenten in Funktionen unterdrük-
          ken.

     -x   Keine Variablen melden, auf die externe Deklarationen verweisen,
          die jedoch niemals verwendet werden.

     Die nachstehenden Optionen verändern das Verhalten von lint:

     -l x Die lint-Bibliothek llib-lx.ln mit aufnehmen. So kann man bei-
          spielsweise eine lint-Version der Arithmetik-Bibliothek llib-
          lm.ln durch Einfügen von -l m in die Kommandozeile einschließen.
          Mit diesem Argument wird die Standardverwendung von llib-lc.ln
          nicht unterdrückt. Diese lint-Bibliotheken müssen sich im dafür
          vorgesehenen Dateiverzeichnis befinden. Diese Option kann für
          Verweise auf lokale lint-Bibliotheken verwendet werden und ist
          nützlich bei der Entwicklung von Mehrdatei-Projekten. Die Reihen-
          folge der angegebenen -l-Optionen ist signifikant, da die Biblio-
          theken in dieser Reihenfolge verarbeitet werden.

     -n   Nicht auf Kompatibilität bzgl. der Standard-C-Lint-Bibliothek
          prüfen.

     -p   Portabilität auf andere Dialekte von C prüfen. Gleichzeitig mit
          der strengeren Prüfung bewirkt diese Option auch ein Abschneiden
          aller interner Namen auf acht Zeichen und aller externen Namen
          auf sechs Zeichen und einheitliche Groß- oder Kleinschreibung.

     -s   Nur eine einzeilige Diagnose erzeugen. lint puffert Meldungen
          gelegentlich, um einen zusammenhängenden Bericht zu erzeugen.

     -k   Verhalten bei /*LINTED [Meldung]*/-Anweisungen ändern. Normaler-
          weise unterdrückt lint Warnungen zu der Programmzeile, die dieser
          Anweisungen folgt. Mit dieser Option jedoch gibt lint eine
          zusätzliche Meldung aus, die den Kommentar innerhalb der Anwei-
          sung enthält, anstatt die Meldung zu unterdrücken.

     -y   Bearbeitete Datei so behandeln, als wäre die Anweisung /*LINTLI-
          BRARY*/ verwendet worden. Normalerweise wird eine lint-Bibliothek
          durch die Anweisung /*LINTLIBRARY*/ erzeugt.

     -F   Pfadnamen der Dateien angeben. lint gibt den Dateinamen normaler-
          weise ohne den Pfad an.

     -c   lint zum Erstellen einer Datei .ln für jede Datei .c in der Kom-
          mandozeile veranlassen. Diese .ln-Dateien sind nur das Produkt
          des ersten Durchgangs von lint, es wird nicht auf Kompatibilität
          zwischen den Funktionen geprüft.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

lint(1)                                                             lint(1)

     -o x lint erstellt eine lint-Bibliothek mit dem Namen llib-lx.ln. Die
          Option -c hebt jede Angabe der Option -o auf. Die eingerichtete
          lint-Bibliothek ist die Eingabe für den zweiten Durchgang von
          lint. Die Option -o bewirkt lediglich, daß diese Datei in der
          angegebenen lint-Bibliothek gesichert wird. Zur Erzeugung einer
          llib-lx.ln ohne zusätzliche Meldungen wird die Verwendung der
          Option -x vorgeschlagen. Die Option -v ist nützlich, wenn die
          Quelldateien für die lint-Bibliothek nur externe Schnittstellen
          sind.

     -V   Produktname und Version auf die Standard-Fehlerausgabe ausgeben.

     -W Datei
          Eine .ln-Datei nach Datei schreiben, damit sie von cflow(1) ver-
          wendet werden kann.

     -R Datei
          Eine .ln-Datei nach Datei.lnt schreiben, damit sie von cxref(1)
          verwendet werden kann.

     --   Ende der Optionenliste. Die Angabe ist nötig, wenn der erste
          Dateiname mit - beginnt.

     lint erkennt viele cc-Optionen, wie -D, -U, -I, -L, -g, -O, -Xt, -Xa
     und -Xc, wobei -g und -O ignoriert werden. Bei Verwendung anderer
     Optionen wird eine Warnung ausgegeben, und sie werden ignoriert.

     Durch bestimmte konventionelle Kommentare in der C-Quelle kann das
     Verhalten von lint beeinflußt werden:

























Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

lint(1)                                                             lint(1)

     /*ARGSUSED n*/
          Sorgt dafür, daß lint nur die ersten n Argumente zur Verwendung
          überprüft; ein fehlendes n wird als 0 gewertet. Diese Option ver-
          hält sich wie die Option -v für die nächste Funktion.

     /*CONSTCOND*/ oder /*CONSTANTCOND*/ oder /*CONSTANTCONDITION*/
          Unterdrückt für den nächsten Ausdruck Meldungen über konstante
          Operanden.

     /*EMPTY*/
          Unterdrückt Meldungen über eine leere Anweisung, die auf eine
          if-Anweisung folgt. Diese Angabe sollte direkt nach dem Test-
          Ausdruck und vor dem Semikolon stehen. Sie wird zur Verfügung
          gestellt, um leere if-Anweisungen zu unterstützen, wenn eine gül-
          tige else-Anweisung folgt. Damit werden Meldungen über eine fol-
          gende leere else-Anweisung unterdrückt.

     /*FALLTHRU*/ oder /*FALLTHROUGH*/
          Unterdrückt Hinweise auf Anweisungen, die auch direkt von der
          vorhergehenden Anweisung aus erreicht werden können, obwohl sie
          mit einem case- oder einem default-Label versehen sind. Diese
          Angabe sollte direkt vor dem Label stehen.

     /*LINTLIBRARY*/
          Am Anfang einer Datei unterdrückt Meldungen über unbenutzte Funk-
          tionen und Funktionsargumente in dieser Datei. Das gleiche kann
          auch mit den Optionen -v und -x erreicht werden.

     /*LINTED [Meldung]*/
          Unterdrückt alle dateiweiten Warnungen, außer solchen, die unbe-
          nutzte Variablen oder Funktionen betreffen. Diese Angabe sollte
          unmittelbar vor der Zeile stehen, in der die lint-Warnung auf-
          trat. Die Option -k ändert die Art, in der lint diese Angabe
          behandelt. Statt Meldungen zu unterdrücken, gibt lint dann eine
          zusätzliche Meldung aus, sofern eine im Kommentar vorhanden ist.
          Diese Angabe ist im Zusammenhang mit der Option -s bei der Ver-
          wendung von nachgeschalteten Filtern sinnvoll.

     /*NOTREACHED*/
          Stoppt an geeigneten Stellen die Kommentare über nicht erreichba-
          ren Code. Dieser Kommentar wird normalerweise unmittelbar nach
          Aufrufen von Funktionen wie exit(2) verwendet.

     /*PRINTFLIKE n*/
          Sorgt dafür, daß lint wie gewöhnlich die ersten (n-1) Argumente
          überprüft. Das nte Argument wird als Formatierungsanweisung für
          printf interpretiert, um die verbleibenden Argumente zu überprü-
          fen.






Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

lint(1)                                                             lint(1)

     /*PROTOLIB n*/
          Bewirkt, daß lint Funktionsdeklarations-Prototypen wie Funktions-
          definitionen behandelt, wenn n ungleich Null ist. Diese Angabe
          kann nur zusammen mit /*LINTLIBRARY*/ verwendet werden. Wenn n
          gleich Null ist, werden Funktions-Prototypen normal behandelt.

     /*SCANFLIKE n*/
          Bewirkt, daß lint wie gewöhnlich die ersten (n-1) Argumente über-
          prüft. Das nte Argument wird als Formatierungsanweisung für scanf
          interpretiert, um die verbleibenden Argumente zu überprüfen.

     /*VARARGS n*/
          Unterdrückt die übliche Prüfung auf eine veränderliche Anzahl der
          Argumente in der nachfolgenden Funktionsdeklaration. Die Datenty-
          pen der ersten n Argumente werden geprüft; ein fehlendes n wird
          als 0 interpretiert. Der Gebrauch des Auslassungssymbols (...) in
          der Definition wird für neuen oder neubearbeiteten Code vorge-
          schlagen.

     lint erzeugt die erste Ausgabe pro Quelldatei. Reklamationen hinsicht-
     lich eingebundener Dateien werden gesammelt und nach Verarbeitung
     aller Quelldateien ausgegeben, wenn -s nicht angegeben wurde. Wird die
     Option -c nicht verwendet, so werden die Informationen von allen Ein-
     gabedateien gesammelt und auf Übereinstimmung geprüft. Wenn Unklarheit
     darüber besteht, ob eine Reklamation von einer angegebenen Quelldatei
     stammt oder von einer der eingebundenen Dateien, wird an diesem Punkt
     der Name der Quelldatei mit anschließendem Fragezeichen ausgegeben.
     Das Verhalten der Optionen -c und -o ermöglicht eine inkrementelle
     Verwendung von lint in einem Satz von C-Quelldateien. Gewöhnlich ruft
     man lint einmal für jede Quelldatei mit der Option -c auf. Mit jedem
     dieser Aufrufe wird eine .ln-Datei angelegt, die der .c-Datei ent-
     spricht und alle Meldungen ausgibt, die genau diese Quelldatei betref-
     fen. Nachdem alle Quelldateien separat durch lint bearbeitet worden
     sind, wird lint erneut aufgerufen (ohne die Option -c), wobei alle
     .ln-Dateien mit den benötigten Optionen -l x aufgelistet werden.
     Dadurch werden alle Inkonsistenzen zwischen den Dateien ausgegeben.
     Dieses Verfahren funktioniert gut mit make; es ermöglicht die Verwen-
     dung von make, um nur die Quelldateien, die seit der letzten Bearbei-
     tung dieser Dateien verändert worden sind, mit lint zu bearbeiten.

HINWEISE
     lint ist auf den PCC C-Compiler zugeschnitten. Mit lint können aber
     auch Programme überprüft werden, die mit dem C-DS C-Compiler übersetzt
     werden sollen. Allerdings sind dann nicht alle ausgegebenen Warnungen
     sinnvoll.

INTERNATIONALE UMGEBUNG
     Die Sprache der Meldungstexte wird durch die Umgebungsvariablen
     LCALL, LCMESSAGES oder LANG bestimmt.

     In der Standardeinstellung verhält sich das System so, als wäre es
     nicht internationalisiert, d. h. die Meldungstexte erscheinen in


Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

lint(1)                                                             lint(1)

     englischer Sprache. Wenn Sie die Sprache der Meldungstexte ändern wol-
     len, müssen Sie eine dieser Variablen entsprechend setzen.

     Ausführliche Informationen zu den Abhängigkeiten der Umgebungsvaria-
     blen und zur Internationalisierung im allgemeinen finden Sie im Hand-
     buch "Leitfaden für Programmierer: Internationalisierung - Lokalisie-
     rung". Zur Einstellung der Benutzerumgebung siehe auch environ(5).

DATEIEN
     LIBDIR
          das Dateiverzeichnis, in dem die in der Option -lx angegebenen
          lint-Bibliotheken vorhanden sein müssen

     LIBDIR/lint[12]
          erster und zweiter Durchgang

     LIBDIR/llib-lc.ln
          Deklarationen für C-Bibliotheksfunktionen (Binärformat; Quelle
          ist in LIBDIR/llib-lc)

     LIBPATH/llib-lm.ln
          Deklarationen für Arithmetik-Bibliotheks-Funktionen (Binärformat;
          Quelle ist in LIBDIR/llib-lm)

     TMPDIR/*lint*
          temporäre Dateien

     TMPDIR
          gewöhnlich /var/tmp, kann jedoch durch Setzen der Umgebungsvaria-
          blen TMPDIR neudefiniert werden [siehe tempnam() in tmpnam(3S)]

     LIBDIR
          gewöhnlich /ccs/lib

     LIBPATH
          gewöhnlich /usr/ccs/lib:/usr/lib

SIEHE AUCH
     cc(1), cflow(1), cxref(1), lex(1), make(1), yacc(1).

     Kapitel "lint" in "Leitfaden und Werkzeuge für die Programmierung mit
     C".












Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026