original in en Guido Socher
en to es Javier Palacios
Guido es un fan de Linux desde hace tiempo. Su página sobre Linux puede encontrarse en www.oche.de/~bearix/g/.
SNiFF+ de takefive software es un entorno integrado de desarrollo disponible para Linux. Takefive ofrece una versión descargable gratuita en http://www.takefive.com/penguin. El software revisado aquí viene de un CD de demostración, y parece idéntico a la versión descargable. La restriccioón en ambas versiones es que tienen un límite de 200 ficheros. Esta revisión corresponde a la versión 3.2 de SNiFF+, y ha sido probada bajo Redhat Linux 6.0.
SNiFF+ es un entorno integrado de desarrollo para los lenguajes C, C++, Java, IDL, Fortran77, Fortran90 y ADA. SNiFF+ te da la posibilidad de entender el código de forma gráfica. Los usuarios de otros sistemas operativos importantes posiblemente hayan usado entornos de desarrollo similares, por lo que estarán muy contentos de ver un entorno de estas características disponible para Linux.
SNiFF+ y los entornos de desarrollo integrados suelen ser útiles cuando se trabaja con códigos muy grandes y en aquellos casos en que es necesario realizar cambios a código que no ha sido completamente escrito por uno mismo. SNiFF+ soporta varias herramientas de control de versiones, como RCS, CVS, clearcase, etc... Esto lo hace ideal para equipos involucrados en grandes proyectos.
SNiFF+ para Linux viene con un script de instalación. Este script te lleva a un modo de diálogo. No tuve ningún problema al usarlo. SNiFF+ aún no está disponible en formatos empaquetados como rpm o deb, pero esto no es un problema, ya queSNiFF+ no se reparte por todo el arbol de directorios. El script instala todo bajo un único directorio (yo elegí /opt/sniff) y es por tanto muy sencillo de desinstalar con posterioridad. Debajo se muestra el comienzo del script de instalación con las diferentes plataformas UNIX para las que SNiFF+ está disponible.
SNiFF+ 3.2 installation procedure Copyright (c) 1993-1999 TakeFive Software GmbH. All rights r eserved. 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 : ....the script continues here with more questions..... |
Uno de los errores que cometí durante la instalación fue en el diálogo que me permitía instalar "Vim 5.0 Vi Improved por Bram Moolenar". Puesto que ya lo tenía en mi disco duro, decidí no instalar Vim. Esto se mostró como un error, y me ví obligado a instalarlo más tarde. La versión de Vim que viene con SNiFF+ es especial. Tiene la capacidad de comunicarse con otras herramientas del entorno de desarrollo. Por tanto, si pretentes usar vi, has de instalar este Vim especial.
SNiFF+ se puede instalar en cualquier parte. Por ello, es necesario hacer dos cosas después de completar la instalación:
#!/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+ viene con un sistema de documentación en html bastante agradable. Parece existir la posibilidad de imprimir la documetación desde ficheros postscript, pero nunca sentí la necesidad de hacerlo, y la documentación en html es buena. Al arrancar SNiFF+ con el comando sniff aparece una pantalla de bienvenida. Esta pantalla nos da la posibilidad de ir directamente a la documentación específica para un lenguaje de programación. Al seleccionar este modo, se arranca netscape con el tutorial correspondiente. Un vistazo, aunque sea rápido, al tutorial es muy recomendable.
El lanzador
Un proyecto es el principal elemento estructural de SNiFF+ para agrupar
ficheros y directorios. Al arrancar sniff, te aparece una pequeña ventana
de lanzamiento. A partir de ella puedes crear nuevos proyectos, y puedes
revisar los ya existentes. Aquí es donde se suele empezar a trabajar,
arrancando el editor de proyectos o el visualizador de símbolos.
El editor de proyectos
Con el editor de proyectos puedes ver todos los ficheros de código que pertenecen
a un proyecto. Puedes filtrar la lista, incluir/excluir subdirectorios, etc.
También te muestra la información de versiones, y puedes añadir o quitar ficheros.
Una característica muy agradable es que se puede buscar en la lista de nombres
de fichero simplemente escribiendo el nombre del fichero. La función de búsqueda
es incremental, buscando según se escribe, de forma similar al isearch de emacs.
El visualizador de símbolos
El visualizador de símbolos es similar al editor de proyectos, excepto que lo
que vemos son todos los símbolos y cuando se usan. A través de un click del botón
derecho arrancamos el buscador de referencias (más abajo) y podemos ver cuando
se referencia un símbolo, y a que símbolos referencia a su vez. Por ejemplo,
que funciones usan una función o variable particulares.
El visualizador de clases
El visualizador de clases muestr los miembros definidos y heredados de una clase.
Permite varias posibilidades de filtrado en base a la herencia, visibilidad o tipo
de los miembros.
El visualizador de jerarquías
El visualizador de jerarquías muestra las relaciones de herencia entre clases.
El buscador de referencias (cross referencer)
Nos permite ver en qué lugares aparece un símbolo determinado (función,
variable, etc.), es usado o que funciones y/o clases se refieren a él.
El visualizador de includes
Para ver qué ficheros incluye un fichero .c, o cuando un fichero .h es usado.
El editor de codigo
Sniff viene ocn un agradable editor para el código. Resalta la sintaxis y permite
saltar rápidamente entre funciones y clases. También permite llamar a otros programas,
como el buscador de referencias, directamente desde el editor de código.
El editor es muy avanzado, aunque carece de la potencia de vim o emacs. Por otra
parte, tanto vim como emacs requieren que los conozcas a fondo para usarlos realmente
bien. El editor de código de sniff resulta una elección muy recomendable si no
estas totalmente familiarizado con vim o emacs.
Aquellos que no quieren usar nada que no sea vim o emacs también pueden usar estos editores con SNiFF+. Si quieres usar vim tendrás que instalar la versión especial que viene con SNiFF+, que incluye compilados algunos protocolos de comunicación que permiten a vim y a SNiFF+ comunicarse entre ellos. Para usar emacs no necesitas instalar nada especial. El emacs que viene con la mayor parte de las distribuciones de Linux debería funcionarte.
El shell de sniff
The shell window is mainly used during a compile run. You can see the error messages from the
compiler in that window. To jump to an error in the source code you
highlight the line of the error message in the shell and then you select
Edit->Show Error. This takes you in the source editor to the line where
the error happened.
This shell window is otherwise very simple. See also
further down
for a description of problems that I had with this shell window.
Otras herramientas
SNiFF+ includes also a couple of other programs which I have not used yet.
These are Documentation editor, DiffMerge and Configuration Manager.
DiffMerge seems to be merge tool to merge in changes from a branch and
Configuration Manager seems to be a program to create and manage branches.
SNiFF+ ha sido portado a Linux, y esto se hace evidente en múltiples ocasiones.
Afortunadamente, soporta los atajos habituales como Crtl-a (para ir al principio de
la línea), Crtl-e (ir al final), Crtl-k (borrar hasta el final), etc...
Pero no permite copiar y pegar usando el ratón. Bajo Unix suele disponerse de un
ratón de tres botones, seleccionándose texto con el botón izquierdo y pegándolo
con el botón central. Bajo Linux esto funciona con todos los programas y resulta
realmente molesto que no lo haga con SNiFF+. En su lugar, el cortado y pegado se
hace con una combinación de letras que parece proceder de MS-Windows.
Por lo demas SNiFF+ es un buen producto, pero su incapacidad de cortar y pegar con
el ratón no paraba de molestarme cada vez que lo usaba. Si tuviera que sugerir
una mejora prioritaria para SNiFF+ sería ésta.
Habitualmente uso colores en el prompt del shell, y tengo definido una alias para
convertir ls en ls --color=tty. Los xterm normales de linux,
gnome-term, kvt, etc. soportan estos colores:
El shell que viene con sniff no lo hace, y el aspecto resulta ligeramente cómico:
Afortunadamente no es complicado de solventar, aunque sería mucho más apropiado
que sniff soportara los códigos de color ANSI color codes. Para fijar esto la
solución más fácil es comprobar que $TERM es igual a etterm (el nombre del
terminal sniff), eliminar el alias de ls y no usar colores en el promp.
Los usuarios de emacs probablemente sepan que el shell de emacs tiene el mismo
problema, y tengan algún arreglo en sus .bashrc o .tcshrc. Aquí hay un trozo de
código que los usuarios de tcsh pueden colocar en su .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 endifLos usuarios de bash pueden usar:
# 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
Otro problema de shell de sniff es el nombre del teminal. etterm no era conocido para mi /etc/termcap. Esto producía el mensaje 'etterm': unknown terminal type.
SNiFF+ 3.2 es un buen producto. Proporciona la visualización y el comfort que uno espera de un entorno integrado de desarrollo. Además, SNiFF+ se mostró muy estable sobre mi Redhat 6.0. Lo he usado durante 3 semanas antes de escribir este artículo, y nunca se colgó. Las herramientas están hechas para un uso habitual, y con excepción del molesto problema del copiar/pegar todas sus partes eran fáciles de usar. Personalmente, no comprendo que este software esté disponible para tantos sistemas Unix sin soportar un simple copiado/pegado usando los botones del ratón.