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]

Photo de Gerrit

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]

[Illustration]

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 :)
grepper

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

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.