TMS FixInsight – Un Plugin para hacer bien las cosas

Posted by on in Tools

Por muy exigentes que seamos con nuestro código, por más que declaremos una constantes donde sabemos que deben ir, sigamos la convención de nomenclatura tan usada en Delphi, detestemos hacer o que alguien en nuestro equipo de trabajo haga métodos muy largos… si en definitiva somos de aquellas personas que nos gusta hacer bien las cosas o si somos como aquellas personas que nos gustaría hacer mejor las cosas. En algún momento hemos deseado una herramienta que nos ayude con esa labor.

 

TMS FixInsight es un plugin para las personas que nos gusta hacer bien nuestro trabajo, no sólo con los ejemplos que he puesto en el párrafo anterior, si no también con varios que veremos en este artículo más abajo (aunque sólo mostraré algunas), además TMS incorpora cada vez más características, así que es probable que cuando leas este artículo seguramente hay más de las que pueda listar hoy.

Como lo describen en la web de TMS y traduzco para ustedes… “TMS FixInsight es una herramienta de análisis de código para desarrolladores Delphi, la cual detecta problemas en el código fuente”. Actualmente este plugin es soportado desde la versión Delphi 2006 hasta la actual Delphi Tokyo (Que es la versión más reciente), te recomiendo visitar la página del fabricante para verificar si la versión de tu Delphi es soportada.

Veamos de una vez el funcionamiento de lo dicho:

¿Cómo instalar?

Basta con:

  1. Ir a http://www.tmssoftware.com/site/fixinsight.asp descargar la versión Trial del componente acorde a tu versión de Delphi.
  2. Verificar que tienes cerrado tu IDE de Delphi.
  3. Ejecutar el instalador del Plugin y una vez termine. Abrir el IDE de Delphi.

¿Qué instala y cómo se ve?

Una vez instalado, al abrir Delphi vemos algo como los siguiente en nuestro menú Project:

Nuevo Grupo de opciones en de FixInsight

Veamos primero la opción FixInsight Settings, pues yo mismo haciendo esto me di cuenta del potencial de este plugin, es por esto que para este artículo he decidido comenzar por ahí… hagamos click en él y veamos lo que nos depara…

 

Pantalla de Configuración del FixInsight

En la pantalla de configuración está representado el potencial de este plugin y al seleccionar cada opción nos muestra ejemplos del problema y una breve descripción del mismo, nos han agrupado en 3 distintas zonas lo que podemos validar:

  1. Convenciones (Ejemplo: Que nuestros métodos no ocupen más de 20 líneas o las que decidas).
  2. Precauciones (Ejemplo: Que no dejemos un bloque try..except vacío)
  3. Optimización: (Ejemplo: Métodos con parámetros usados que nunca son utilizados).

Esta pantalla de configuración, nos permite activar o inactivar las opciones que deseamos validar, incluso cambiar la configuración de algunas de estas opciones. Casi al final de este mismo artículo encontrarás una tabla que he preparado con algunas de las características representadas.

Supongamos que dejo todo en configuración, tal y como está por defecto… ¿Cómo hago que funcione?

Basta con abrir uno de tus proyectos, ir al menú Project|Run FixInsight y listo, FixInsigth se encargará de analizar tu código con respecto a lo que hemos configurado y mostrará el resultado en la ventana de mensajes del propio Delphi, algo como lo siguiente:

[FixInsight Optimization] uApod.pas(219): O801 CONST missing for unmodified string parameter ‘pURL’
[FixInsight Optimization] uApod.pas(235): O801 CONST missing for unmodified string parameter ‘pFecha’
[FixInsight Optimization] uApodCtrl.pas(52): O801 CONST missing for unmodified string parameter ‘pCodificado’
[FixInsight Optimization] uApod.pas(85): O803 Constant ‘CarpetaDB’ is declared but never used

 

Lo he ejecutado en la app que hice para el concurso de la NASA y me he encontrado con que en varios métodos estoy dejando de declarar como constantes los parámetros que no estoy modificando, lo cual sería la advertencia 0801 del FixInsight. De manera pues que basta con hacer doble click sobre el mensaje que pretendo corregir y FixInsight nos llevará al lugar exacto donde debemos realizar el respectivo cambio… en el ejemplo que comento me ha llevado a lo siguiente cuando hago doble click sobre el primer mensaje:

Podemos ver, que tal y como indica el plugin, pURL no está declarado como constante cuando pURL no está siendo modificado dentro de dicho método, así pues que he corregido el código anterior así:

Y listo, así de sencillo… gracias a FixInsight me he dado cuenta de este descuido, he corregido y optimizado mi aplicación.

Una pequeña cuestión que encontré al realizar pruebas con este plugin es que debes ejecutarlo sobre un proyecto que esté guardado, de lo contrario es muy probable que no te muestre los resultados esperados. Lo he comentado, sin embargo me parece un muy pequeño inconveniente teniendo en cuenta que normalmente esto no lo ejecutaríamos sobre un proyecto que tenga solamente un botón con un “Hola Mundo”y sin guardar.

Te invito pues a probarlo y correr este plugin en alguno de tus proyectos a ver que tal te va, es probable que te sorprenda con su reporte y hagas algo como reírte del pasado y decir “¿Cómo es que se me ha pasado esto?”. Bueno sí, eso fue lo que a mí me sucedió :D.

 

Tabla con algunas validaciones de FixInsight (C=Convención, W=Precaución, O=Optimización), en total, hasta el momento tiene 42 y todas muy útiles, sin embargo listaré sólo algunas sin un motivo en especial: 

Código Mensaje Original Descripción
C101  Method ‘%s’ is too long (%d lines) “El método X es demasiado largo”, este sale cuando has definido una cantidad de lineas máximas para crear un método y estás son sobrepasadas.
 C102 Too many parameters in ‘%s’ (%d parameters) Este mensaje ocurre cuando un método (ya sea procedimiento o función) tiene demasiados parámetros, ya que esto dañaría la legibilidad de código.
 C108 Nested WITH statement Esto ocurre cuando tenemos un with anidado a otro with, ejemplo:
 

 

Claramente esto podría generar varias equivocaciones, así que podemos hacer que FixInsight nos avise sobre ello.

 W504  Missing INHERITED call in destructor Este mensaje ocurre cuando hemos creado un objeto en el constructor de nuestra clase, sin embargo no lo hemos destruido o simplemente no hemos heredado el destructor de la clase padre.
 W513  Format parameter count mismatch Puede suceder que tengas por equivocación algo como lo siguiente:

 

Result := Format(‘%s = %d’, [Name]);

Claramente Format espera 2 valores para sus 2 parámetros (%s y %d), sin embargo sólo estás enviando uno (Name).

 O803 Constant ‘%s’ is declared but never used Sucede cuando declaras una constante pero nunca la utilizas.
 O804 Method parameter ‘%s’ is declared but never used Puede sucedernos que declaramos un parámetro dentro de un método, pero luego de mover acá y allá, queda sin uso, ahí mostrará este mensaje.

Para ver el listado completo te insto a descargar el Trial de este Plugin, instalarlo, ir a la opción de configuración y hacer click sobre cada una de las opciones, ahí se encuentran unos ejemplos cortos pero muy descriptivos de lo que evalúa cada opción.

Espero les haya sido de utilidad, por el momento estoy preparando un pequeño vídeo para aquellos que les gusta más ese formato donde utilizo el FixInsight. Así que estar pendientes.

Post original en PuroDelphi.Com

Hasta luego. ?



About ( )
Gold User, No rank,
MVP - Embarcadero, administrador de www.purodelpi.com, moderador en www.clubdelphi.com

Comments

Check out more tips and tricks in this development video: