Original in en Guido Socher
en to fr Eddy Cappeau
SNiFF+, de TakeFive software, est un environnement de développement intégré, disponible pour linux. Takefive offre une version téléchargeable gratuitement, et libre de droit, à http://www.takefive.com/penguin. Le logiciel testé dans cet article provient d'un CD, et semble être équivalent à la version téléchargeable. Elles sont toutes les deux limitées à 200 fichiers. La version testée sous RedHat Linux 6.0, est la 3.2.
SniFF+ est un Environnement intégré de développement pour les langages C, C++, Java, IDL, Fortran77, Fortran90 et ADA. SNiFF+ vous donne la possibilité de comprendre visuellement votre code. Les utilisateurs d'autres gros systèmes doivent déjà être habitués à de tels outils de développement, et seront heureux de voir que de tels IDE sont disponibles sous Linux.
SNiFF+ et les IDEs en général,sont plutôt taillés pour de gros programmes et dans des environnements où vous devez effectuer des changements sur du code existant, que vous n'avez pas entièrement écrit vous-même. SNiFF+ supporte aussi des outils de gestion de version variés tels que RCS, CVS, clearcase, etc ... Cela le rend probablement idéal pour des équipes impliquées dans de grands projets.
SNiFF+ pour Linux est fourni avec un script d'installation. Ce script vous offre un mode dialog. Je n'ai pas eu de problème à l'utiliser. SNiFF+ n'est pas disponible en package du style rpm ou deb, mais ce n'est pas un problème, car SNiFF+ ne s'installe pas un peu partout dans le système. Tout est mis dans un seul répertoire (j'ai utilisé /opt/sniff), et il est donc très facile de le désinstaller par la suite. Ci-dessous, vous pouvez voir le début de la procédure d'installation, avec les différentes plates-formes Unix pour lesquelles SNiFF+ est disponible.
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 : ....le script continue ici avec quelques questions..... |
Une chose sur laquelle je suis tombé lors de l'installation fut la boîte de dialogue où il était proposé d'installer "Vim 5.0 Vi Improved par Bram Moolenar". J'ai décidé de refuser, l'ayant déjà installé sur mon disque dur. Ceci se révéla être une erreur, et j'ai du l'installer plus tard. En effet, la version de Vim fournie avec le produit, est une version modifiée, et a la possibilité de communiquer avec les autres outils de l'IDE. En conséquence, si vous comptez utiliser Vi, installez cette version dédiée.
SNiFF+ peut être installé n'importe où. Vous aurez donc deux choses à faire avant d'en avoir terminé avec l'installation :
En fonction du shell que vous avez l'habitude d'utiliser, éditez /etc/profile, ~/.bashrc pour bash ou /etc/csh/cshrc, .tcshrc pour le tcsh, ou n'importe quel fichier rc dédié à votre shell. Si vous n'avez pas envie de changer le fichier rc de votre shell, vous pouvez toujours utiliser ce petit script que j'ai appelé startsniff :
#!/bin/sh PATH="$PATH:/opt/sniff/bin" export PATH MANPATH="$MANPATH:/opt/sniff/man" export MANPATH SNIFF_DIR=/opt/sniff export SNIFF_DIR #démarrer sniff: sniff
SNiFF+ est livré avec un système de documentation en html très bien conçu.
Il semble possible d'imprimer la documentation à partir de fichiers postscript,
mais celle en html est tellement bien que je n'ai jamais ressenti
le besoin de le faire.
Lorsque vous lancez SNiFF+ grâce à la commande sniff, vous vous trouvez en face
d'un écran de bienvenue. Cet écran vous donnera la possibilité de vous rendre
directement à la documentation concernant les langages de programmation.
Sélectionner ce choix lancera netscape avec le tutorial correspondant.
Je recommanderais au minimum de survoler ce tutorial.
Un projet est l'élément structurant principal dans SNiFF+, pour grouper
les fichiers et les répertoires. Lorsque vous lancez le logiciel, vous
découvrez la petite fenêtre du lanceur.
A partir de là, vous pouvez créer de nouveaux projets, et
avoir une vue d'ensemble sur ceux déjà existants. Vous démarrez normalement votre
travail en lançant l'éditeur de projet, ou l'explorateur de symboles.
L'éditeur de projet
Dans l'éditeur de projet, vous pouvez visualiser tous les fichiers sources
appartenant au projet. Vous pouvez appliquer des filtres sur cette liste,
inclure ou exclure des sous-répertoires, etc ...
Il vous renseigne également sur le contrôle des versions/les informations de verrouillage
et vous pouvez vérifier/modifier ces fichiers.
Une particularité appréciable est que vous pouvez rechercher dans la liste
des noms de fichiers, juste en tapant le nom du fichier. La recherche est
incrémentale, se faisant lors de la saisie, comme le ferait isearch, sous
Emacs.
L'explorateur de symbole
L'explorateur de symbole est similaire à l'éditeur de projet, sinon
que vous voyez tous les symboles et l'endroit où ils sont utilisés. Via un
click droit de la souris, vous pouvez lancer une référence croisée (voir ci-
dessous) et voir où le symbole est réferencé, et qui le référence, e.g
quelles fonctions utilisent cette fonction ou variable particulières.
L'explorateur de classe.
L'explorateur de classes montre les membres définis localement et hérités d'une
classe. Il propose un certain nombre de possibilités de filtrage basées sur
l'héritage, la visibilité, et le type des membres.
L'explorateur de hiérarchie
L'explorateur de hiérarchie affiche les liens d'héritage des classes.
Le gestionnaire des références croisées
Ici, vous pouvez voir à quel endroit tel ou tel symbole (fonction ou
variable) est utilisé, et aussi à quels symboles font référence une
fonction, ou une classe.
L'explorateur d'include
Vous pouvez voir ici quelles sont les inclusions faites dans un fichier .c,
ou à quel endroit un fichier .h est utilisé.
L'éditeur de sources.
Sniff offre un sympathique éditeur de source. Il supporte la coloration syntaxique
et vous pouvez facilement naviguer entre les fonctions/classes. Vous pouvez aussi
appeler d'autres programmes, comme le gestionnaire des références croisées.
directement de l'intérieur de cet éditeur.
Bien qu'il soit évolué, il ne possède tout de même pas la puissance d'un
Vim ou d'un Emacs. En contrepartie, Vim ou Emacs vous demandent de les connaître
sur le bout des doigts pour véritablement les exploiter. Cet éditeur est donc
un très bon choix si vous n'êtes pas totalement familier avec Vim ou Emacs.
Ceux qui ne veulent utiliser rien d'autre que Vim ou Emacs seront heureux
d'apprendre qu'ils pourront s'en servir au sein de SNiFF+. Comme mentionné
précédemment, pour Vim, il vaut mieux installer la version fournie avec le
logiciel. Celle-ci est modifiée pour supporter certains protocoles qui lui
permettent de communiquer avec SNiFF+.
Pour Emacs, rien de spécial à installer par contre. Celui fourni avec votre
distribution linux devrait faire l'affaire.
Le sniff shell
La fenêtre shell est principalement utilisée durant une phase de compilation.
C'est là que seront affichés les divers messages issues de la compilation.
Sélectionnez la ligne du message d'erreur dans le shell, et choisissez
Edit->Show Error. Cela vous renvoie dans l'editeur de source, à la ligne où
l'erreur s'est produite.
Autrement, cette fenêtre shell est très simple. Voir aussi
un peu plus bas pour une description des
problèmes que j'ai rencontrés avec.
Autres outils
SNiFF+ propose aussi quelques programmes que je n'ai pas encore utilisés. Ce sont l'éditeur de documentation, DiffMerge, et le gestionnaire de configuration. DiffMerge semble être un outil pour fusionner les modifications dans une branche, et le gestionnaire de configuration, un programme pour créer et gérer les branches.
SNiFF+ est un portage vers linux, et cela se voit dans bien des cas. Heureusement, il supporte pas mal de raccourcis claviers tels que Ctrl-a (aller en début de ligne), Ctrl-e (aller à la fin de ligne), Ctrl-k (effacer jusqu'à la fin de ligne), etc ... Il ne supporte pas par contre, le copier-coller via la souris. Sous Unix, le troisième bouton de la souris est normalement supporté, et la sélection du texte se fait avec le bouton gauche, et le coller, se fait avec le bouton du milieu. Sous linux, cela reste vrai pour la plupart des programmes, et c'est vraiment surprenant que SNiFF+ ne le permette pas. A la place, ce mécanisme est géré par une combinaison de touches semblant venir de MS-Windows. SNiFF+ est malgré tout un produit sain, mais ne pas pouvoir copier-coller avec la souris m'a vraiment ennuyé chaque fois que je l'ai utilisé. Si j'avais à suggérer un développement majeur à rajouter à SNiFF+, ce serait à ce sujet.
J'utilise les couleur sous le shell, et j'ai défini l'alias ls --color=tty
pour ls. Les terminaux normaux sous linux comme xterm, gnome-term, kvt, suportent tous ces
couleurs :
Celui fournit avec SNiFF+ ne supporte pas cette caractéristique, et les
sorties sont alors un peu bizarres :
Par chance, ce n'est pas très dur à corriger, même s'il aurait été appréciable
que sniff supporte les couleurs ANSI. La manière la plus facile de régler le
problème, est de tester la variable $TERM, et, si elle est égale à etterm (le nom
donné au terminal de sniff), de supprimer l'alias de ls et de ne pas utiliser de
couleurs pour le prompt.
Les vétérans d'Emacs savent déjà que le shell d'Emacs est sujet aux mêmes
problèmes et ont déjà contourné la difficulté dans leur .bashrc ou .tcshrc.
Voici un peu de code que les utilisateurs de tcsh pourront insérer dans leur
.tcshrc.
if ($?TERM) then # désactive les couleurs du prompt pour Emacs et sniff. if ("$TERM" == "dumb" || "$TERM" == "etterm") then # un prompt sans couleurs: set prompt='\n%n@%m[%d,%T]\n(%~) %# ' alias cwdcmd '/bin/ls -F' alias ls '/bin/ls -F' endif endifUn utilisateur de bash aurait pu écrire:
# désactive les couleurs du prompt pour Emacs et sniff. if [ "$TERM" = "etterm" -o "$TERM" = "dumb" ]; then PS1="[\u@\h \W]\\$ " alias ls="/bin/ls -F" fi
Un autre problème est le nom du shell de sniff. etterm n'est pas connu dans mon /etc/termcap. Ceci engendre le message :'etterm': unknown terminal type.
SNiFF+ 3.2 est un bon produit. Il fournit la visualisation et le confort qu'on est en droit d'attendre de la part d'un IDE. SNiFF+ se comporte aussi de manière très stable sur ma RedHat 6.0. Je l'ai utilisé pendant trois semaines avant la rédaction de cet article. SNiFF+ n'a pas planté une seule fois. Les outils ont été crées dans l'optique d'une utilisation journalière. Mis a part le problème très énervant du copier/coller , toutes les partie de SNiFF+ sont très utilisables. Personnellement, je n'arrive pas à comprendre comment un produit disponible pour tant de systèmes Unix n'implémente pas un simple couper/coller à la souris, via le bouton droit.