SNiFF+ pour Linux

ArticleCategory:

Software Development

AuthorImage:

[Photo of the Author]

TranslationInfo:

Original in en Guido Socher 

en to fr Eddy Cappeau

AboutTheAuthor:

Guido est un fan de linux depuis longtemps. Sa page dédiée peut être consultée à l'adresse : www.oche.de/~bearix/g/.

Abstract:

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.

ArticleIllustration:

[Illustration]

ArticleBody:

SNiFF+, c'est quoi ?

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.

Installation

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 :

  1. indiquer dans la variable d'environnement SNIFF_DIR l'endroit où sera installé SNiFF+ (/opt/sniff dans mon cas)
  2. Faire figurer dans la variable PATH le répertoire binaire à l'intérieur du SNIFF_DIR,(/opt/sniff/bin dans mon cas).

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

 

Documentation

tutorial in netscape

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.
 

Composants important de SNiFF+


Le lanceur launcher

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 launcher

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 launcher

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 hierarchy

L'explorateur de hiérarchie affiche les liens d'héritage des classes.

Le gestionnaire des références croisées crossref

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 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. edit

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 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.  

Le côté obscur

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 :
shell

Celui fournit avec SNiFF+ ne supporte pas cette caractéristique, et les sorties sont alors un peu bizarres :
shell
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
endif
Un 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.  

Conclusion

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.