Lesezeichen

GroĂźe Softwareprojekte werden mit der Zeit immer unĂĽbersichtlicher. Sogenannte Tags helfen dem Entwickler, sich im Quelltext-Dschungel zurechtzufinden.

vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Michael Riepe
Inhaltsverzeichnis

Wer kleine Softwarepakete im Alleingang entwickelt, findet sich in den Sources gewöhnlich gut zurecht. In umfangreicheren Dateibäumen - etwa denen des aktuellen Linux-Kernels oder der Gnu Compiler Collection (GCC), die aus gut 20 000 respektive 30 000 einzelnen Dateien bestehen - kann der Nutzer ohne Hilfe jedoch nicht mehr navigieren.

Vor allem Projekte, die objektorientierte Sprachen wie C++ oder Java nutzen, erreichen durch die konsequente Trennung der Klassen voneinander schnell eine unhandliche Größe. Moderne integrierte Entwicklungsumgebungen (IDEs) enthalten deshalb in der Regel einen sogenannten „Class Browser“, der das Suchen nach Klassen und Methoden vereinfacht. Pate dafür stand die Sprache Smalltalk, die von Beginn an einen eigenen Class Browser mitbrachte.

Bei Sprachen, die nicht dem objektorientierten Paradigma folgen - etwa C oder Fortran - helfen typische Class Browser nur bedingt weiter. Viele Editoren - darunter die Klassiker ex, vi und emacs, aber auch neuere Modelle wie nedit - bieten jedoch eine Alternative: Sie erlauben es, die Quelldateien zu indizieren. Existiert ein Index, springt der Editor auf Kommando zur Definition einer Variablen, Funktion oder Klasse - sofern sie im Index erfasst ist.

Nutzer des emacs etwa können den Cursor auf den Namen einer Variablen setzen und anschließend mit Alt-. Enter zu ihrer Definition und mit Alt-* wieder zurückspringen. Im vi und in seinen diversen Nachahmern erledigen die Tastenkommandos Strg-] - auf PC-Tastaturen mit deutscher Belegung muss man normalerweise Strg-AltGr-] drücken, manchmal funktioniert auch Strg-5 - und Strg-T dieselbe Aufgabe. Mit :ta kann der Anwender außerdem einen Namen manuell eingeben. Ruft er vi mit der Option -t auf, positioniert der Editor den Cursor gleich beim Start an der gewünschten Stelle. Sprünge und Rücksprünge lassen sich schachteln: Vom Hauptprogramm aus kann der Nutzer den gesamten Code erforschen.

Als Index dient eine Textdatei, die der Nutzer mit einem separaten Programm erzeugen muss. Ihr Name lautet bei emacs üblicherweise TAGS, bei vi und den meisten anderen Editoren hingegen tags. Die Indexformate unterscheiden sich ebenfalls voneinander. Beide Varianten enthalten jedoch eine Relation zwischen Schlüsselwörtern - den sogenannten Tags -, Dateinamen und Cursorpositionen. Letztere können beim vi-Indexformat auch aus einem regulären Ausdruck bestehen [1]. Hat der Programmierer Zeilen hinzugefügt oder entfernt, findet der Editor mit einem regulären Ausdruck trotzdem exakt ins Ziel. Modifiziert der Nutzer allerdings die gesuchte Zeile, kann die Suche fehlschlagen. Nach Änderungen im bestehenden Code sollte der Anwender daher den Index neu erstellen.

Viele Editoren bringen ihren eigenen Indexgenerator mit. Üblicherweise heißen die Programme ctags oder etags - Letzteres erzeugt das korrekte Format für emacs. Beide Formate kann das „Exuberant Ctags“ (ctags.sourceforge.net) erzeugen: Ruft der Nutzer es als etags oder ctags -e auf, generiert es einen Index für emacs.

Seinem Namen - „exuberant“ bedeutet „üppig“ - wird das Programm allein dadurch gerecht, dass es mehr als 30 Sprachen unterstützt. Der Nutzer kann nicht nur C- und Fortran-Code indizieren, sondern auch Skripts für AWK, Perl, PHP, Python, Ruby oder die Bourne-Shell. Auf der kompletten Liste, die sich mit ctags --list-languages ausgeben lässt, stehen außerdem diverse objektorientierte Sprachen. Zusätzlich versteht das Programm die Syntax von HTML und Makefiles.

Wem das nicht genügt, der kann dem Programm weitere Sprachen beibringen. Die Option --langdef= legt zunächst ihren Namen fest. Mit --langmap=: kann der Nutzer einer Sprache bestimmte Dateinamen zuordnen: --langmap=Tex:.tex etwa teilt dem Programm mit, dass Dateien mit der Namensendung .tex Quellcode für Tex enthalten. Wie ctags in der neu definierten Sprache Schlüsselwörter findet, lässt sich mit der Option --regex- einstellen. Sie erwartet als Argument einen Ausdruck der Form ///, wie ihn vi-Nutzer vom Befehl :s (Suchen und Ersetzen) her kennen. Statt der Schrägstriche kann man ein anderes Zeichen verwenden, etwa #. Den Ersatztext trägt ctags als Schlüsselwort in die Indexdatei ein.

In der Regel muss der Nutzer für jede zusätzliche Sprache mehrmals die Option --regex- angeben. Darüber hinaus bietet das Programm zahlreiche weitere Optionen - etwa zur Feineinstellung des Indexformats für bestimmte Editoren oder zum rekursiven Durchlaufen ganzer Dateibäume. Dadurch kann die Kommandozeile lang und unübersichtlich werden. Das Programm erlaubt es daher dem Anwender, immer verwendete Optionen in den Umgebungsvariablen CTAGS und ETAGS oder in der Datei .ctags in seinem Home-Verzeichnis abzulegen. Mit --options= liest das Programm Optionen aus der angegebenen Datei. Der Systemverwalter kann in /etc/ctags.conf zusätzliche Optionen für alle Nutzer eintragen.

[1] Michael Riepe; GNU-Tips; Wild Card; Mustersuche und reguläre Ausdrücke; iX 9/2001, S. 139 (mr)