Naviguer avec snavigator
ArticleCategory: [Choose a category, translators: do not translate
this, see list below for available categories]
SoftwareDevelopment
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Gerrit Renker
en to fr Laurent Richard
AboutTheAuthor:[A small biography about the author]
Gerrit avait horreur des ordinateurs avant qu'il ne connaisse le C et Linux.
Abstract:[Here you write a little summary]
Cet article va vous pr�senter snavigator, un puissant outil d'analyse de code,
de r�f�rencement crois� et de re-engineering qui se trouve �tre vraiment
indispensable pour g�rer la complexit� de la maintenance de logiciels d'une
certaine taille ainsi que la gestion des paquets d'une mani�re efficace.
ArticleIllustration:[One image that will end up at the top of the
article]
ArticleBody:[The main part of the article]
Motivation
Un vieux proverbe dit qu'il ne faut pas juger un livre � sa couverture. Un
parall�le peut �tre fait avec le code ouvert. N�anmoins, on ne peut pas comparer
du code ouvert � de la documentation libre. La lecture devient de plus en plus
complexe � mesure que la taille des fichiers sources s'agrandissent. J'ai
r�cemment d� programmer � l'aide d'un programme qui avait une demi page html en
guise de documentation. En comparaison au plus de 348.000 lignes de code ouvert
�crit en Java et divis� en pas moins de 2060 fichiers (voir figure). Quand on
arrive � de telles chiffres, l'orientation �lectronique, le reverse engineering
et les outils d'analyse deviennent indispensable comme le navigateur de code
source Red Hat pr�sent� dans cet article.
Cet outil automatise beaucoup de t�ches que l'on devrait r�aliser en utilisant
des (c)tags, grep, search ou replace. Mais il r�alisera cela de mani�re plus
pr�cise et plus conviviale dans une interface graphique facile d'utilisation.
Jetez un coup d'oeil aux captures d'�cran pour vous en convaincre.
Installation sous Debian
Sous Debian, vous pouvez obtenir le tout via un simple
apt-get install sourcenav sourcenav-doc
Cela r�cup�rera en m�me temps la documentation. Le navigateur de sources r�sidera
dans /usr/lib/sourcenav/. Vous pouvez appeler le programme principal
via /usr/lib/sourcenav/bin/snavigator (voir l'astuce � propos des liens
symboliques ci-dessous). La documentation peut �tre trouv�e dans
/usr/share/doc/sourcenav/html/.
Installation � partir des sources
L'URL de la page d'accueil du navigateur de source est http://sourcenav.sourceforge.net/,
les t�l�chargements se font en fait depuis ici
(sourceforge.net/project/showfiles.php?group_id=51180).
Obtenez le dernier tarball sourcenav-xx.xx.tar.gz.
Lors du t�l�chargement, essayez de faire autre chose, en attendant, vu que les
sources font environs 55 Mo. Cela a quand m�me un cot� positif car apr�s cela,
le paquet n'a besoin de rien d'autre pour �tre utilis�. M�me s'il fait un
grand usage d'autres biblioth�ques comme Tcl/Tk, Tix et Berkeley DB, les
versions correctes de ces paquets sont �galement incluses. Afin d'�viter des
conflits avec d'autres versions de Tcl/Tk, etc. sur votre syst�me,
cela me semble une bonne id�e de faire l'installation dans un r�pertoire s�par�,
par ex. /opt/sourcenav.
Les instructions sugg�rent en plus d'utiliser un r�pertoire de construction
s�par�; cela se d�roule comme suit. Apr�s avoir d�compress�, ex�cutez les
commandes suivantes dans le r�pertoire contenant les sources d�compress�es :
mkdir snbuild; cd snbuild
../sourcenav-*/configure --prefix=/opt/sourcenav
make ## cela prend un peu de temps ...
make install ## vous devez devenir surper-utilisateur d'abord
L'option --prefix est l� pour sp�cifier le r�pertoire d'installation.
Lorsque le � configure � tourne, on a d�j� une id�e sur l'�tendue des langages que
snavigator peut g�rer. Il est �galement possible d'ajouter des parsers
suppl�mentaires pour les langages de votre choix ou d'en cr�er. Une fois que
l'installation est termin� via make install, snavigator est pr�t �
focntionner et il peut �tre lanc� par /opt/sourcenav/bin/snavigator.
Au lieu d'�tendre votre PATH � ce nouveau r�pertoire, vous pouvez comme je vous
le sugg�re plut�t de cr�er un lien symbolique, par ex. vers
/usr/local/bin.
ln -s /opt/sourcenav/bin/snavigator /usr/local/bin
L'ex�cutable principal est un script shell qui a besoin de conna�tre son
r�pertoire. Donc, il est un peu perdu si on l'appelle via un lien symbolique.
Cela peut �tre r�solu en changeant les lignes suivantes dans
/opt/sourcenav/bin/snavigator;
au lieu de
snbindir=`dirname $0
utilisez
prog=`readlink -f $0`
snbindir=`dirname $prog`
L'option -f de readlink(1) cr�e une repr�sentation du nom de
chemin canonique. Cela signifie que cela va fonctionner m�me si on acc�de au
fichier via une longue suite de liens symboliques cons�cutifs.
Utiliser snavigator
La premi�re fois que snavigator est lanc�, il va demander � conna�tre les
r�pertoires contenant les fichiers sources comme le montre la capture d'�cran
suivante.
Les langages qui sont inclus mais qui ne sont pas limitatifs sont Java, C, C++,
Tcl, Fortran, COBOL et l'assembleur. Une fois les d�tails sur la localisation
du code source donn�, il va construire, ind�pendamment, une base de donn�e du
projet en incluant l'information de r�f�rencement, les hi�rarchies de classes,
les inter-d�pendances entre les fichier et bien plus encore. La construction
prend un certain temps d�pendant bien s�r de la taille de votre projet. Une fois
r�alis�, la base de donn�e peut �tre consult�e et des informations
suppl�mentaires peuvent �tre demand�es � propos du code.
Je ne fais que mettre en avant quelques possibilit�s du programme pour vous
donner une id�e globale. Un guide de l'utilisateur illustr� de m�me
qu'un manuel de r�f�rence sont inclus dans le r�pertoire html de
l'installation.
Gestion du projet
Une partie du programme est un �diteur avec colorisation de la syntaxe
pouvant �tre aussi utilis� pour des fichiers � imprimer. La capture d'�cran
suivante montre la fen�tre principale de l'�diteur. Elle ressemble vraiment �
un environnement de d�veloppement et fournit des outils comme une usine
� d�boguer, des commandes de construction de projet, un contr�le de version et
ainsi de suite.
En particulier, les grandes fl�ches vertes sur le menu fonctionnent de la
m�me mani�re qu'un navigateur web. L'�diteur de projet permet de contr�ler
l'information de la base de donn�es. Par ex : si un fichier vient d'�tre
mis-�-jour, l'ajout ou la suppression de fichiers de la liste ainsi que d'autres
t�ches de gestion. Tous les fichier sont trait�s comme un grand projet.
D�s lors, si des modifications sont effectu�es, vous pouvez mettre � jour
l'information de la base de donn�es via Refresh Project ou
Reparse Project.
Lorsque la fen�tre de l'�diteur met en �vidence quelque chose comme le nom d'une
fonction comme celle qui est repr�sent�e ici en jaune, vous
pouvez faire un clic-droit avec votre souris afin de pouvoir choisir de faire
une d�claration de ce qui a �t� mis en �vidence (comme un fichier d'en-t�te),
d'impl�menter le symbole mis en �vidence (ex : un fichier .cpp) ainsi
que quelques autres options utiles.
Navigateur de symboles
Voici la premi�re fen�tre qui s'ouvre apr�s avoir constitu� la base de donn�es
du projet. G�n�ralement, elle contient les noms de fichiers mais peut
�galement afficher les m�thodes de classe, les symboles de fonctions et ainsi
de suite. Lorsque on clique sur un nom de fichier, l'�diteur sera ouvert avec
ce fichier.
La fen�tre grep
Cela ouvre, comme le dit si bien le titre, une interface graphique conviviale
pour ��grepper�� dans l'ensemble des fichiers de code source concern�s. Les
entr�es correspondantes seront mises en �vidences et cliquables. Le code source
peut d�s lors faire l'objet d'une navigation comme si vous �tiez sur une page
web. Comme le montre la capture d'�cran, le fichier ainsi que sa localisation
respective peuvent �tre s�lectionn�s et par simple clic, vous entrez dans
l'�diteur qui sera positionn� � l'endroit exact dans le code. (Cette recherche
sur la base d'un terme a donn� des r�sultats positifs dans beaucoup de fichiers
Java :)
Fen�tre Xref
Ici, nous avons une liste de r�f�rences crois�es de tous les symboles. En
particulier, on peut constater quelles m�thodes lisent (r), �crivent (w), ... et
sur quelles donn�es et voir les relations entre les symboles repr�sent�es de
mani�re hi�rarchique. Les entr�es sont cliquables.
Fen�tre Class
Cette interface regroupe toutes les informations utiles que l'on d�sire
conna�tre sur les classes dans un langage orient� objet. En particulier, les
super- et les sous-classes sont affich�es ainsi que les noms des attributs et
des m�thodes accompagn�es de leurs param�tres. Pour changer, la fen�tre en
dessous montre une classe ClientSocket en C++ qui h�rite de
Socket et qui a quelques m�thodes. Encore une fois, en cliquant sur une
des entr�es, vous pouvez ouvrir une fen�tre d'�dition positionn�e � l'endroit
ad�quat.
Autres alternatives
cscope est un navigateur interactif, bas� sur la console de code source
C (il peut faire �galement du C++). Il a certaines fonctionnalit�s de
snavigator. Une capture d'�cran se trouve ici.
En fait, il est beaucoup plus vieux et a �t� utilis� dans pas mal de tr�s gros
projets. Sa page d'accueil est http://cscope.sourceforge.net/.
Mais vous n'avez pas besoin de vous y rendre car il est incorpor� directement
dans vim et peut �tre utilis� de la m�me mani�re que (g)vim en
combinaison avec les tags.
Tapez simplement
:help cscope
dans votre session vim pour v�rifier les options disponibles. Il existe certains
d�riv�s de cscope. Freescope
est un cl�ne de cscope qui a quelques fonctionnalit�s suppl�mentaires
telles que la compl�tion de symboles. Il y a maintenant �galement une interface
graphique sous KDE pour cscope qui s'appelle kscope et qui peut �tre
trouv�e sur http://kscope.sourceforge.net/.
Conclusions
Pour quiconque impliqu� au moins en partie dans du re-engineering ou de
l'int�gration de code source, snavigator est un outil puissant et tr�s utile.
J'avais avant une vieille application Qt qui ne fonctionne malheureusement plus
avec la version actuelle de la biblioth�que Qt. En regardant les messages
d'erreurs et en naviguant un peu avec snavigator, j'ai trouv� rapidement que
seule la liste de param�tre d'une des fonctions devait �tre chang�es. En
utilisant la fonctionnalit� de localisation par clic, il fut possible de
rendre le logiciel complet � jour en � peine quelques minutes.