original in en Guido Socher
en to nl Mylène Reiners
Guido is al lang een Linux fan. Zijn Linux homepage vind je op www.oche.de/~bearix/g/.
SNiFF+ is een Integrated Development Environment voor de talen C, C++, Java, IDL, Fortran77, Fortran90 en ADA. SNiFF+ biedt de mogelijkheid om je code visueel te begrijpen. Gebruikers van andere grote besturingssystemen zijn waarschijnlijk al aan zo'n ontwikkelomgeving gewend, en zullen blij zijn dat zo'n IDE ook voor Linux beschikbaar is.
SNiFF+ en IDEs in het algemeen zijn het beste geschikt voor grote stukken code en voor omgevingen waar je veranderingen moet aanbrengen in bestaande code die je niet helemaal zelf hebt geschreven. SNiFF+ ondersteunt ook een aantal versie beheer programma's zoals RCS, CVS, clearcase, enz... Dit maakt het waarschijnlijk ideaal voor teamwerk in grotere projecten.
SNiFF+ voor Linux wordt geleverd met een installatie script in dialoogvorm. Ik had geen problemen met het gebruik. SNiFF+ is niet beschikbaar in een packages formaat zoals rpm of deb, maar dit is geen probleem aangezien SNiFF+ niet over het hele bestandssysteem heen installeerd. Het script installeert alles in een directory (ik gebruikte /opt/sniff) en is daardoor later gemakkelijk te deïnstalleren. Hieronder zie je het begin van het installatiescript met de verschillende UNIX platforms waarvoor SNiFF+ beschikbaar is.
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 : ....hier volgen meer vragen..... |
Een ding dat ik tijdens de installatie tegenkwam, was de dialoog waar "Vim 5.0 Vi Improved by Bram Moolenar" geïnstalleerd kon worden. Ik besloot dat niet te doen, omdat ik al een versie van Vim had. Dit bleek een fout te zijn, en ik moest het later toch installeren. De versie van Vim die meegeleverd wordt met SNiFF+ is namelijk een speciale. Het heeft namelijk de mogelijkheid om met de andere tools in de IDE te communiceren. Daarom zul je als je Vi wilt gebruiken deze speciale Vim moeten installeren.
SNiFF+ kan op elke plek geïnstalleerd worden. Daarom moet je 2 dingen doen nadat je de installatie voltooid hebt:
#!/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+ wordt geleverd met goede documentatie in html. Er schijnt een mogelijkheid te zijn om ook de documentatie vanuit postscript bestanden te printen, maar ik heb nooit het idee gehad dat ik dat nodig had, omdat de html documentatie goed is. Als je SNiFF+ opstart met het commando sniff krijg je eerst een welkomst scherm. Dit welkomst scherm biedt je de mogelijkheid om onmiddelijk naar de specifieke documentatie voor jouw programmeertaal te gaan. Als je een item selecteert, wordt netscape gestart met de bijbehorende handleiding. Ik raad iedereen aan om de handleiding in elk geval te bekijken.
Het belangrijkste structuurelement om in SNiFF+ bestanden en directories te groeperen is het project. Als je sniff start krijg je het volgende kleine "launcher" venster. Van hieruit kun je nieuwe projecten creëren, en een overzicht krijgen van die projecten die al bestaan. Hier begin je gewoonlijk met je werk door de project editor of de symbol browser te starten.
In de project editor zie je alle bronbestanden die bij een project horen. Je kunt die lijst filteren, sub-directories opnemen of buitensluiten etc. Het toont ook versie controle/locking informatie en je kunt bestanden in- en uitchecken. Een bijzonder aardige mogelijkheid is dat je de lijst van bestandsnamen kunt doorzoeken door alleen de bestandsnaam in te tikken. De zoekfunctie is incrementeel, en zoekt terwijl je typt, net als emacs isearch.
De symbol browser is gelijk aan de project editor behalve dat je alle symbolen ziet en waar ze gebruikt worden. Met een klik op de rechtermuisknop kun je de cross referencer(zie beneden) starten en zien waar naar een symbool verwezen wordt en welke symbolen ernaar verwijzen. Bijv. welke functies gebruiken deze functie of deze variabele.
De Class Browser toont de lokaal gedefinieerde en overgeërfde delen van klassen. Hij biedt een aantal filter mogelijkheden, gebaseerd op de overerving (inheritance), zichtbaarheid en type van de delen.
De Hierarchy Browser toont de inheritance relaties van klassen.
Hier zie je waar een bepaald symbool (functie, variabele enz.) wordt gebruikt, en naar welke symbolen een gegeven functie of klasse verwijst.
Hier zie je welke bestanden een bepaald .c bestand bevat of waar een .h bestand wordt gebruikt.
Sniff wordt uitgeleverd met een aardige source editor. Het omvat syntax
highlighting en je kunt snel binnen functies en klassen springen. Je kunt
van hier uit ook andere programma's aanroepen zoals bijvoorbeeld de cross
referencer.
Hoewel de editor geavanceerd is, heeft hij niet de kracht van vim of
emacs. Aan de andere kant moet je vim of emacs echt goed kennen om ze
goed te gebruiken. De sniff source editor is daarom een goede keus als je
niet 100% vertrouwd bent met vim of emacs.
Degenen die niks anders dan vim of emacs willen gebruiken, kunnen deze editors ook met SNiFF+ gebruiken. Als je vim wilt gebruiken, moet je wel de versie installeren die met SNiFF+ meegeleverd wordt. Deze speciale vim heeft een communicatieprotocol waarmee SNiFF+ in staat wordt gesteld om met vim te "praten". Om emacs te gebruiken hoef je niks speciaals te installeren. De gewone emacs die bij de meeste Linux distributies wordt meegeleverd zou moeten werken.
Het "shell" venster wordt voornamelijk gebruikt tijdens het compileren. In dat venster zie je de foutboodschappen van de compiler. Om naar een fout in de broncode te springen laat je de regel van de fout oplichten in de shell, en kiest voor Edit->Show Error. Dit brengt je in de source editor op de regel waar de fout is opgetreden. Verder is het shell venster erg eenvoudig. Zie ook hieronder voor een beschrijving van de problemen die ik hiermee heb.
SNiFF+ wordt met een aantal andere programma's geleverd, die ik nog niet gebruikt heb. Dit zijn de Documentation editor, DiffMerge en Configuration Manager. DiffMerge lijkt een merge tool te zijn om veranderingen van een tak (branche) samen te voegen die van een andere, en Configuration Manager lijkt een programma te zijn om takken (branches) te maken en te onderhouden.
SNiFF+ is geschikt gemaakt voor Linux, en dat is op een aantal manieren
te merken. Gelukkig ondersteunt het gewone toetscombinaties als Ctrl-a
(ga naar het begin van een regel), Ctrl-e (ga naar het einde van een
regel), Ctrl-k (verwijder tot op het eind van een regel) etc... Het
ondersteunt echter niet kopiëren en plakken (copy and paste) via de
muis. Onder Unix gebruik je gewoonlijk een muis met 3 toetsen, je
selecteert tekst met de linker muisknop, en plakt het met de middelste
muisknop. Onder Linux werkt dit bij alle programma's, en het is erg
irritant dat het niet werkt met SNiFF+. In plaats daarvan wordt
kopiëren en plakken gedaan met een toetscombinatie die van
MS-Windows schijnt te stammen.
SNiFF+ is verder een goed product, maar het niet kunnen kopiëren en
plakken met de muis irriteerde me gewoon elke keer als ik het gebruikte.
Als ik een idee mocht aandragen dat met hoge prioriteit verbeterd moest
worden in SNiFF+ dan is het dat wel!
Ik gebruik kleuren in de shell prompt en ik heb het als alias
ls --color=tty gegeven. De normale Linux xterm, gnome-term, kvt,
enz. ondersteunen deze kleuren:
De shell die meegeleverd wordt met sniff ondersteunt het niet, en de
output ziet er nogal vreemd uit:
Gelukkig is dit niet moeilijk op te lossen, al zou het leuk geweest zijn
als sniff ANSI kleurcodes ondersteunde. De gemakkelijkste oplossing in
om te testen op $TERM en als die gelijk is aan etterm (de sniff terminal
naam) de alias ls verwijderen en geen kleuren te gebruiken bij de prompt.
Emacs gebruikers weten waarschijnlijk dat de shell van emacs hetzelfde
probleem heeft, en hebben allang een workaround gemaakt in hun .bashrc of
.tcshrc. Hier is voorbeeldcode voor tcsh gebruikers voor in hun .tcshrc:
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 endifGebruikers van bash kunnen het volgende gebruiken:
# 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
Een ander probleem van de sniff shell is de naam van de terminal: etterm was tenminste niet bekend in mijn /etc/termcap. Dit resulteert in de boodschap: 'etterm': unknown terminal type.
SNiFF+ 3.2 is een goed product. Het verschaft de visualisatie en het gemak dat je van een IDE zou verwachten. Het bleek ook erg stabiel onder mijn Redhat 6.0. Ik heb het zo'n 3 weken gebruikt voordat ik dit artikel schreef. SNiFF+ crashte niet een keer. De tools zijn gemaakt voor dagelijks gebruik. Met uitzondering van het echt irritante kopiëren en plakken probleem zijn alle delen van SNiFF+ goed bruikbaar. Zelf begrijp ik echt niet dat deze software voor zoveel Unix systemen beschikbaar is, en niet eens het eenvoudige kopiëren en plakken via de muis mogelijk maakt.