Dev & AM

La importancia del Análisis de Código

Muchos de nosotros, habremos trabajado en proyectos en el cual el cliente exigía calidad de código, esto quiere decir, que previamente a una entrega, el código de la aplicación debía ser validado por una herramienta de Análisis de código, con reglas ya impuestas por el cliente o en su defecto por el Arquitecto encargado del proyecto.

Ahora bien, muchos de vosotros os estaréis preguntando qué es todo esto de la validación del código y si en realidad hace falta. Para apoyar un poco más los argumentos a favor, seguro que la gran mayoría de nosotros, nos han llevado a proyectos ya empezados, en mantenimiento o simplemente, proyectos en los cuales una empresa es la encargada de mantener un sistema creado por otra tercera. Y con esta tesitura hemos tenido que lidiar con:

  • Código sin comentar.
  • Código con estructura diferente entre sí, es decir, creado por varias personas sin seguir un estándar.
  • Métodos de clases muy largos y difíciles de entender.
  • Condiciones anidadas y difíciles de comprender.
  • Nombres de variables que no dicen nada.

Y así se puede crear una lista muy larga de situaciones con las que todo el mundo nos habremos encontrado. Y esto suele pasar con proyectos en los que no se aplica una cierta metodología o patrón a seguir por todos los componentes del equipo, por tiempos de entregas, mala planificación de tareas y tiempos, etc.

Después de haber enumerado estas condiciones con las que muchos compañeros y compañeras de profesión nos hemos encontrado, voy a tratar de explicar de una forma rápida y sencilla que es el análisis de código y su importancia.

El análisis de código es una metodología más que establece, en base a una serie de reglas de estilo, si el código generado está bien formado y estructurado. Para ello hay herramientas de análisis que evalúan nuestro código y en base a las reglas de estilo que tenga aplicadas, nos reportará una serie de errores a corregir. Todos esos errores dependerán del lenguaje que estemos utilizando, algunos serán estándar a todos ellos como pueden ser:

  • Nombrado de variables, clases y/o métodos.
  • Complejidad ciclomática de cada clase o método (complejidad en la lógica interna, es decir, que el método en cuestión tenga bucles anidados, condiciones complejas, etc.).
  • Documentación de cada clase, variable, etc.

Lo que debemos entender ahora es la importancia de tener un código que esté validado por los estándares, las razones para ello o algunas de ellas serían las siguientes:

  • Código bien estructurado, documentado y fácil de mantener.
  • Al trabajar con esta metodología, hacemos que la curva de aprendizaje de un nuevo componente del equipo sea menor.
  • Más rapidez a la hora de resolver incidencias.
  • El desarrollador adquirirá mejores prácticas a la hora de programar, lo que tendremos después, serán desarrolladores más profesionales en su trabajo.
  • Refactorización del código mucho más simple.

Para los que aún no estén convencidos de la importancia de practicar esta metodología, solo decir que no es ningún medio de control, es simplemente un medio más para que nuestro proyecto sea más robusto y que tenga un valor añadido.

Para llevar a cabo toda esta metodología, todos los entornos de programación tienen herramientas para ello y aquí expongo solo un pequeño ejemplo de tantas herramientas que hay:

  • Visual Studio de Microsoft, aparte de tener sus propias reglas y analizador de código, tenemos una serie de plugins interesantes:
    • Visual Style Cop: esta herramienta tiene las reglas de estilo necesarias para que nuestro código C# esté validado.
    • Resharper: es otra herramienta (previo pago) que tiene su parte de análisis de código. Es de las más exhaustivas y exigentes que hay con el código que se escribe en la aplicación. A parte de decirte los errores que hay, te propone soluciones no solo a nivel de estilo sino también a nivel de optimización de código.
    • Web Analyzer: es muy útil si queremos estandarizar el código de cliente como los estilos CSS, Javascript (ESLint), TypeScript o CoffeScript.
  • Eclipse IDE, aparte de ser el entorno de desarrollo más famoso que hay de JAVA, incorpora una herramienta de gestión de reglas de análisis de código. Esta herramienta es muy abierta ya que puedes hacer tu propio paquete de reglas y/o crear tus propias reglas.
  • Javascript Linters, son herramientas para analizar y validar código Javascript y las más conocidas o usadas son las siguientes:
    • JSLint, aparte de tener la herramienta expuesta para que copiemos nuestro código y lo validemos desde su web, es la más conocida. Pero, hay algunos problemas de falsos positivos de errores o simplemente que deje de validar si se encuentra con un error gordo.
    • JSHint, está creado a partir de JSLint pero más evolucionado gracias a la comunidad.
    • ESLint, es otra herramienta más como las dos anteriores, tiene plugins de reglas de los diferentes frameworks de Javascript. Usa paquetes npm y gracias a que Web Analyzer la incluye, es de las más fáciles de integrar en el Visual Studio.
  • W3C Validator, es quizá la herramienta más veterana de todas y se creó para validar el HTML y el CSS de las páginas web. Hoy por hoy, si una página web no cumple con los requisitos del W3C, estaremos frente a problemas de compatibilidad de navegadores, usabilidad o con los motores de búsqueda.

Para finalizar, como muestra unos ejemplos de código y algunos errores de estilo analizados con algunas herramientas:

  • Javascript + ESLint: En este ejemplo, vemos que se ha puesto un paréntesis de más.

ejemplo-codigo

  • C# + StyleCop: Aquí tenemos que la documentación del parámetro “userName” está vacío y un problema con el nombrado de la variable “RDPUsuario”:

ejemplo-codigo2

  • HTML5 + W3CVALIDATOR: El error que nos muestra, es debido a que declaramos dos veces el “charset” en dos etiquetas meta diferentes.

ejemplo-codigo3

Descubre cómo desde SOGETI te ayudamos al desarrollo de proyectos IT adaptados a tus necesidades.

1 comment on “La importancia del Análisis de Código

  1. bueno mas bien considero que esto es meramente para hacer a alguien sustituible simple y llanamente acaso le pones limites a un escultor o pintor? para hcer una obra de arte hace falta inventiva y salirse de los estandares, ademas que esto mas que agilizar ralentiza y ya de por si el desarrollo en j2ee es lento

    Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: