|
|
Software entwickeln unter LinuxWeitsprung-MeisterMichael Schilli |
Inhalt |
104 Feder-Lesen
110 Perl-Snapshot
115 Coffee-Shop |
Große Softwareprojekte umfassen tausende Files in tiefen Verzeichnishierarchien. Darin stecken globale und lokale Include-Dateien sowie Bibliotheks- und Programmsourcen. Oft klärt erst langes Suchen, in welchem File eine Funktion definiert ist. Nutzer voluminöser IDEs wie Eclipse[1] haben es gut: Per Mausklick springen sie von einem Codestück, das eine Funktion benutzt, direkt zur Definition dieser Routine. Gleiches gilt für Makros und Datenstrukturen.
Wer den Klassiker »vi«[2] zusammen mit Ctags[3] nutzt, darf diesen Komfort ebenso spüren. Vorbereitend muss er nur ein Tags-File anlegen. Folgendes Kommando durchforstet den Dateibaum unter »project1« rekursiv nach Sourcedateien und legt im File »ctags.project1« einen Index für alle gefundenen Funktionen, Definitionen und Strukturen an:
ctags -R -f ctags.project1 project1
Ctags unterstützt viele Sprachen, von C und C++ über Java und Perl bis Python ist alles Wichtige dabei.
Den Index nutzt »vi«, um zwischen den Files zu navigieren. Der Anwender muss nur die Tags-Datei laden. Dazu gibt er im »vi«-Kommandomodus Folgendes ein:
:set tags=ctags.project1
Nun genügt es, den Cursor auf ein Konstrukt zu setzen und Steuerung+] zu drücken - auf deutschen Tastaturen [Strg]+[AltGr]+[9] (wer eine US-Tastatur besitzt, hat es leichter[4]). Schon springt »vi« zur Definition des Konstrukts, eventuell in eine andere Datei, auch wenn sie in einer fernen Verzeichnishierarchie liegt. Bei mehreren Treffern klappert das Kommando »:tn« weitere Dateien ab.
In Abbildung 1 steht der Cursor auf der Funktion »JS_DefineObject()« in der Datei »jsmath.c« aus Mozillas Javascript-Engine Spidermonkey[5]. Ein kurzes Steuerung+] führt den Benutzer zur Definition nach »jsapi.c« (Abbildung 2). Setzt er dort den Cursor auf die C-Struktur »JSContext«, führt ihn ein weiteres Steuerung+] in den Header »jscntxt.h«. Mit [Strg]+[T] wandert er schrittweise zurück zum Ausgangspunkt der Reise.
Statt nur einer Ctags-Datei verkraftet »vi« auch mehrere gleichzeitig, wenn sie durch Kommas getrennt in der »vi«-Variablen »tags« stehen. Am geschicktesten setzt man die Variable in der Initialisierungsdatei »~/.vimrc«:
set tags=/home/mschilli/ctags.project1,/home/mschilli/ctags.project2
Ein Cronjob, der jede Nacht die Ctags aktualisiert, sorgt dafür, dass Entwickler am Morgen unbeschwert in ihren Projekten herumfahren können. (fjl)
Infos |
[1] Eclipse: [http://www.eclipse.org] [2] Vim: [http://www.vim.org] [3] Ctags: [http://ctags.sourceforge.net] [4] Joachim Wuttke, "Deutsch-amerikanische Freundschaft": Linux-Magazin 10/03, S. 87 [5] Spidermonkey: [http://www.mozilla.org/js/spidermonkey/] |