original in en Guido Socher
en to de Harald Radke
Guido ist ein langjähriger Linuxfan. Seine Linuxhomepage findet sich unter www.oche.de/~bearix/g/.
SNiFF+ ist eine integrierte Entwicklungsumgebung (Integrated Development Environment) für die Sprachen C, C++, Java, IDL, Fortran77, Fortran90 und ADA. SNiFF+ bietet dir die Möglichkeit, deinen Code visuell zu verstehen. Benutzer von anderen großen Betriebssystemen sind viellicht schon an solche Entwicklungsumgebungen gewöhnt und sehr glücklich, zu sehen, daß eine solche IDE für Linux verfügbar ist.
SNiFF+ und IDEs im allgemeinen werden am besten in größeren Projekten benutzt und in Umgebungen, wo man Änderungen an exisierendem Code vornehmen muß, den man nicht vollständig selbst geschrieben hat. SNiFF+ unterstützt auch verschiedene version control tools wie RCS, CVS, clearcase, etc... Dies macht es wahrscheinlich ideal für Gruppenarbeit.
SNiFF+ für Linux kommt mit einem Installationsskript. Dieses Skript führt dich zu einem Dialogmode. Ich hatte keine Probleme, es zu benutzen. SNiFF+ ist nicht in Paketformaten wie rpm oder deb verfügbar, aber dies ist kein Problem, da SNiFF+ sich nicht über das gesamte Dateisystem installiert. Das Skript installiert alles nur in einem Verzeichnis (ich habe /opt/sniff benutzt) und es ist deshalb sehr einfach, es später wieder zu deinstallieren. Unten siehst du den Anfang des Installationsskripts mit den verschiedenen UNIX Plattformen, für die SNiFF+ verfügbar ist.
SNiFF+ 3.2 installation procedure Copyright (c) 1993-1999 TakeFive Software GmbH. All rights reserved. Please select: [A] Install SNiFF+ binaries [B] Install GNU binaries [C] Install FlexLM binaries [X] Exit installation Your selection: a SNiFF+ can be installed for multiple platforms in one directory. It is also possible to install a SNiFF+ kit for a platform which is not the installation platform. Therefore, please select first the target platforms and then the installation platform. Enter the platform(s) for which you want to install SNiFF+: sunos for Sun SPARC machines running SunOS4 (Solaris 1.x) solaris for Sun SPARC machines running SunOS5 (Solaris 2.x) aix for IBM Risc machines running AIX 4.x hpux for HP 9000/7XX machines running HP-UX 10.x/11.x decalpha for DEC/alpha machines running Digital UNIX 3.x/4.x irix for SGI machines running IRIX 5.3 or later unixware for PC's running SCO Unixware 7.x/2.x or OpenServer 5.x linux-glibc for PC's running Linux 2.x based on GNU glibc 2.1 (like RedHat 6.x) sinix for SNI RM machines running Reliant Unix 5.4x Enter one name at a time (Leave empty to finish the selection). Target platform number 1 : linux-glibc Target platform number 2 : ....the script continues here with more questions..... |
Eine Sache, über die ich bei der Installation gestolpert bin, war der Dialog, wo man "Vim 5.0 Vi Improved by Bram Moolenar" installieren konnte. Ich entschied mich, Vim nicht zu installieren, da ich ihn schon auf meiner Platte hatte. Dies stellte sich als Fehler heraus und ich mußte ihn später noch installieren. Die Vim version, die mit SNiFF+ zusammen kommt, ist eine spezielle Version. Sie hat die Fähigkeit, mit den anderen Werkzeugen der IDE zu kommunizieren. Deshalb muß man, wenn man Vi benutzen möchte, diesen speziellen Vim installieren.
SNiFF+ kann überallhin installiert werden. Deshalb mußt du nach der Vollendung der Installation zwei Dinge tun:
#!/bin/sh PATH="$PATH:/opt/sniff/bin" export PATH MANPATH="$MANPATH:/opt/sniff/man" export MANPATH SNIFF_DIR=/opt/sniff export SNIFF_DIR #start sniff now: sniff
SNiFF+ kommt mit einem sehr netten Dokumentationssystem in html. Es scheint die Möglichkeit zu geben, die Dokumentation von Postskriptdateien aus zu drucken, aber ich hatte nie das Gefühl, daß ich dies bräuchte, da die html Dokumentation gut ist. Wenn SNiFF+ mit dem Befehl sniff gestartet wird, wird zunächst ein Willkommensbildschirm angezeigt. Dieser Begrüßungsbildschirm gibt dir die Möglichkeit, direkt zur programmiersprachenspezifischen Dokumentation zu gehen. Auswählen dieses Punktes startet dann Netscape mit dem dazugehörenden Tutorium. Ich würde jedem empfehlen, zumindest einmal schnell durch das Tutorium zu gehen.
Ein Projekt ist das Hauptstrukturelement in SNiFF+, um Dateien und Verzeichnisse zusammen zu gruppieren. Wenn man sniff startet, wird das folgende kleine Startmenüfenster dargestellt. Von hier erstellt man neue Projekte und hat einen Überblick über die schon existierenden. Hier beginnt man normalerweise mit seiner Arbeit durch Starten des Projekteditors oder des Symbolbrowsers.
Im Projekteditor siehst du alle Quelldateien, die zu einem Projekt gehören. Du kannst in dieser Liste filtern, Unterverzeichnisse ein- oder ausschließen etc.. Es zeigt auch version control/locking Informationen an und man kann Dateien ein/aus-checken. Ein sehr nettes Feature ist, daß man in der Liste der Dateinamen durch einfaches Eintippen des Dateinamens suchen kann. Die Suchfunktion ist inkremental, es wird während des Tippens gesucht, ähnlich zu Emacs isearch.
Der Symbolbrowser ist ähnlich zum Projekteditor, außer, daß man alle Symbole sehen kann sowie wo sie benutzt werden. Durch einen Klick auf die rechte Maustaste kann man den cross referencer (siehe unten) starten und sehen, wo auf ein Symbol Bezug genommen wird und welche Symbole darauf Bezug nehmen. Z.B., welche Funktionen diese spezielle Funktion oder Variable benutzen.
Der Class Browser (Klassenbrowser) zeigt die lokal definierten und ererbten Member einer Klasse. Er sorgt für eine Reihe von Filtermöglichkeiten, die auf Vererbung, Sichtbarkeit und Typ der Memberfunktionen basieren.
Der Hierarchiebrowser zeigt die Vererbungsverhältnisse von Klassen.
Hier sieht man, in welchen Plätzen ein gegebenes Symbol (Funktion, Variable etc.) benutzt wird und auch zu welchen Symbolen eine gegebene Funktion oder Klasse sich bezieht.
Hier sieht man, welche Dateien in einer gegebenen .c Datei mitenthalten sind oder wo eine .h Datei benutzt wird.
Sniff kommt mit einem netten Sourceeditor. Es besitzt Syntaxhighlighting und man
kann schnell zwischen Funktionen/Klassen hin- und herspringen. Man kann auch
andere Programme, wie z.B. den cross referencer direkt innerhalb des Source
Editors aufrufen.
Der Editor ist sehr fortschrittlich, hat jedoch nicht die Mächtigkeit von
Vim oder Emacs. Auf der anderen Seite erfordern Vim oder Emacs, daß man sie
wirklich gut kennt. Der sniff source editor ist deshalb eine sehr gute Wahl,
wenn man nicht 100% mit vim oder emacs vertraut ist.
Diejenigen, die nichts anderes als vim oder emacs benutzen wollen, können diese Editoren auch mit SNiFF+ benutzen. Wenn du vim benutzen möchtest, solltest du die Version installieren, die mit SNiFF+ mitgeliefert wird. Dieser spezielle vim hat einige Kommunikationsprotokolle einkompiliert, die es SNiFF+ ermöglichen, mit vim zu sprechen. Um emacs zu benutzen, mußt du nichts spezielles installieren. Der normale emacs, der mit den meisten Linuxdistributionen mitkommt, sollte laufen.
Das Shellfenster wird hauptsächlich während eines Kompilierungslaufes benutzt. Man kann die Fehlermeldungen des Kompilierers in diesem Fenster sehen. Um zu einem Fehler im Sourcecode zu springen, hebt man die Zeile der Fehlermeldung in der Shell hervor und wählt dann Edit->Show Error. Dies führt einen im Sourceeditor zu der Zeile, wo der Fehler passiert ist. Dieses Shellfenster ist ansonsten sehr einfach. Siehe auch weiter unten die Beschreibung der Probleme, die ich mit diesem Shellfenster hatte.
SNiFF+ enthält auch einige andere Programme, die ich bisher noch nicht benutzt habe. Dies sind der Dokumentationseditor, DiffMerge und der Konfiguration Manager. DiffMerge scheint ein Mergetool zu sein, daß Veränderungen von einem Zweig merged und der Konfigurationsmanager scheint ein Programm zu sein, um Zweige zu erzeugen und zu verwalten.
SNiFF+ wurde nach Linux portiert und dies ist in vielen Fällen sichbar.
Glücklicherweise unterstützt es gewohnte short cuts wie Crtl-a (gehe zum Beginn
der Zeile),
Crtl-e (gehe zum Ende der Zeile), Crtl-k (lösche bis zum Ende der Zeile) etc...
Es unterstützt jedoch nicht das Kopieren und Pasten mit der Maus. Unter Unix hat
man normalerweise eine 3Tastenmaus und man wählt den Text mit der linken
Maustaste, während man ihn mit der mittleren Maustaste pastet. Unter Linux läuft
das in allen Programmen und es ist wirklich ärgerlich, daß dies mit SNiFF+
nicht geht. Stattdessen wird copy und paste mit einer Tastenkombination erreicht,
die von MS-Windows zu kommen scheint.
SNiFF+ ist ansonsten ein ordentliches Produkt, aber nicht in der Lage zu sein,
mit der Maus kopieren und pasten zu können, hat mich jedes Mal geärgert, wenn
ich es benutzt habe. Wenn ich eine Verbesserung mit der höchsten Priorität für
SNiFF+ vorschlagen müßte, dann wäre es dieser Punkt.
Ich benutze Farben in der shell prompt und ich habe ls zu
ls --color=tty gealiased. Normale Linux xterm, gnome-term, kvt, etc
unterstützen alle diese Farben:
Die Shell, die zu sniff gehört, unterstützt es nicht und die Ausgabe sah deshalb
ein bißchen komisch aus:
Glücklicherweise ist dies nicht so schwer zu reparieren, obwohl es schön gewesen
wäre, wenn sniff ANSI Farbcodes unterstützt hätte. Um es zu reparieren, ist es
die einfachste Lösung, $TERM zu testen und wenn das gleich etterm
(der sniff Terminalname) ist, dann unaliase ls und benutze keine Farbe in dem
prompt.
Langzeit Emacsbenutzer wissen wahrscheinlich, daß die Shell in Emacs dasselbe
Problem hat und haben schon in ihrer .bashrc oder .tcshrc. daranherumgearbeitet.
Hier ist z.B. Code für tcsh Bentuzer, um in ihre .tcshrc zu gehen:
if ($?TERM) then # switch off color prompt for emacs and sniff if ("$TERM" == "dumb" || "$TERM" == "etterm") then # a color free prompt: set prompt='\n%n@%m[%d,%T]\n(%~) %# ' alias cwdcmd '/bin/ls -F' alias ls '/bin/ls -F' endif endifBenutzer der bash müssen schreiben:
# switch off color prompt for emacs and sniff if [ "$TERM" = "etterm" -o "$TERM" = "dumb" ]; then PS1="[\u@\h \W]\\$ " alias ls="/bin/ls -F" fi
Ein weiteres Problem der sniff shell ist der Name des Terminals. etterm wurde zumindest in meinem /etc/termcap nicht erkannt. Dies produziert dann die Meldung 'etterm': unknown terminal type.
SNiFF+ 3.2 ist ein gutes Produkt. Es liefert die Visualisierung und den Komfort, den man von einem IDE erwartet. SNiFF+ lief auch sehr stabil unter meinem Redhat 6.0. Ich hatte es für ca. 3 Wochen benutzt, bevor ich diesen Artikel schrieb. SNiFF+ ist nicht einmal abgestürzt. Die Werkzeuge wurden für den täglichen Gebrauch entwickelt. Mit der Ausnahme des wirklich ärgerlichen copy/past-Problems waren alle Teile von SNiFF+ sehr gut brauchbar. Persönlich kann ich nicht verstehen, daß diese Software für so viele Unixsysteme verfügbar ist und nicht die einfache copy/paste Funktion mit der Maus richtig hinbekommt.