Detección de errores Java con FindBugs

0
19181

Determinación de errores con FindBugs

A la hora de desarrollar aplicaciones Java es interesante disponer de un
conjunto de herramientas para ayudarnos a no cometer equivocaciones básicas.

He probado la herramienta FindBugs y me he quedado impresionado por su
sencillez y aparente potencia.

Vamos a ver, sobre uno de los

códigos de uno de nuestros recientes tutoriales
, cómo nos puede ayudar a
anticipar errores.

Descarga

Podemos ir al Web del producto y conseguir el zip con los binarios
http://findbugs.sourceforge.net/

Arrancamos el producto

Una vez descomprimido, solo tenemos que arrancar el fichero por lotes (en
entorno Windows)

Configuramos el proyecto

Pulsado el botón, encontramos el resumen y lo dice todo:

Vemos la porción de código que se ve afectada

Identificación del error

La descripción del error es bastante buena, incluida la
proposición del arreglo. Básicamente nos esta comentando que tenemos un bloque
de código que, en caso de producirse una excepción dejaría un Stream abierto y
nos propone que incluyamos un bloque finally, para evitarlo.

Vemos el detalle del código afectado:

   // esta función recupera el texto de la página
    String recuperaContenido(HttpURLConnection enlace)
    {
       try
       {
           String respuesta = "";
           BufferedReader in = new BufferedReader (new InputStreamReader(enlace.getInputStream()));

           String cadena = "";

	   while (cadena != null)
	   {
		cadena = in.readLine();
		if (cadena != null)
		{
                	  respuesta+=("\n" + cadena);
		}
            }
          
           return respuesta;
       }
       catch(Exception e)
       {
            return "Error " + e.getMessage() + "\n";
       }
    } 

Corrección

Podemos codificar el cambio propuesto y comprobar que se soluciona
el problema…

   // esta función recupera el texto de la página
    String recuperaContenido(HttpURLConnection enlace)
    {
       BufferedReader in = null;
        
       try
       {
           String respuesta = "";
           in = new BufferedReader (new InputStreamReader(enlace.getInputStream()));

           String cadena = "";

	   while (cadena != null)
	   {
		cadena = in.readLine();
		if (cadena != null)
		{
                	respuesta+=("\n" + cadena);
		}
            }
          return respuesta;
       }
       catch(Exception e)
       {
            return "Error " + e.getMessage() + "\n";
       }
       finally 
       {
            if(in != null)
            {   
               try { in.close();  }  catch (Exception ignorada) {}
            }
       }
    }

Conclusiones

Los jefes de proyecto tenemos habitualmente un problema crítico y consiste en
que las posibles variables que nos pueden dar juego, las tenemos ya definidas:

  • Duración: Ya se ha negociado la fecha limite
  • Alcance: Se han negociado los requisitos
  • Coste: El presupuesto esta acotado
  • Calidad: La calidad la define la metodología (en el mejor de los
    casos)

Entonces, bajo esta coyuntura, solo podemos jugar con la productividad:

  • Sistematización: Disponer de plantillas y procedimientos que nos
    guíen en los procesos (valoración rápida, análisis, diseño, construcción,
    etc.)
  • Reutilización: No reinventar la rueda y reaprovechar lo ya
    construido.
  • Automatización: Capacidad de evitar labores mecánicas (pruebas,
    documentación, compilación, empaquetamiento, etc.)
  • Anticipación de errores: Utilización de herramientas que nos ayuden
    a analizar nuestro código sin ejecutar las pruebas

Esta herramienta, FindBugs, puede ayudarnos parcialmente a mejorar nuestro
trabajo aunque debemos combinarla con otras y buenas prácticas y plantillas.

El día a día probablemente nos impida elevarnos al problema y optimizar
nuestra productividad. Es posible que necesitemos gente no contaminada de
nuestra realidad para ayudarnos a mejorar….. Para eso es posible que me podáis
contratar ….

Sobre el
Autor ..

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad