Análisis de código Cobol con Sonar y Jenkins

Continuamos nuestra serie sobre el análisis de código Cobol, con el objetivo de demostrar que es simple y fácil de iniciar un proceso de evaluación de la calidad de este código Legacy, sin ser un experto en este idioma.

Ya tienes una plataforma de análisis de código, con Sonar y Jenkins. Si no es el caso, una serie anterior de post explica cómo instalar estas herramientas:

en nuestro entorno.

Analizas código Java o .NET con esta plataforma y se te pide hacer lo mismo con aplicaciones Cobol. El problema: no conoces nada del mundo Mainframe. ¡Qué lío!

No, nada de pánico. Nuestros dos posts anteriores explicaban:

Ahora ha llegado el momento: vamos a ver como implementar el proceso de análisis en nuestra plataforma Sonar-Jenkins. Let’s play.

Validación de la entrega

Primer paso: verificar que la entrega del código es correcta, es decir, cumple con los principios presentados en el post anterior. Si no tienes código para probar un análisis, Sonar ofrece unos archivos para tus primeros pasos, en esta página: Sonar Project Examples.

Esta página permite conseguir un conjunto de archivos de código fuente para distintas tecnologías. Haz Click en el enlace ‘Cobol’ y serás redirigido a una página con un botón ‘Downloads’ que te permitirá recuperar un archivo comprimido que contiene un directorio ..\projects\languages\ con diferentes ejemplos de código fuente, incluyendo unos en un subdirectorio ‘cobol’. A ver que tenemos:

  • Un fichero ‘Custmnt2.cbl’ en una carpeta ‘src’.
  • Unos ficheros .cpy en un directorio ‘copybooks’.

Muy bien. Se cumplen las reglas de nuestro post anterior para la entrega:

  • Vamos a analizar un programa Cobol y varios Copy-books, entregados en un directorio específico y con las extensiones .cbl et .cpy por defecto.
  • En el programa Cobol, podemos ver que el código comienza en la posición 7, que es la configuración predeterminada en Sónar. Así que no necesitamos cambiar los parametros por defecto.

Entrega validada. Podemos proceder al análisis.

Configuración del análisis

Vamos a realizar nuestro análisis Sonar con Jenkins, sin presentar los detalles de su creación, puesto que ya lo haces para otras aplicaciones. O si es la primera vez, puedes ver aquí cómo empezar: Sonar – Análisis Cobol con Jenkins.

En este ejemplo, el análisis se basó en un archivo ‘MyAppCobol.properties’ con los diferentes parámetros. Esta vez, vamos a trabajar sin este archivo, especificando la configuración directamente en Jenkins. Sin embargo, estos parámetros, ¿qué son?

En el directorio ..\projects\languages\cobol\ con el código fuente que hemos descargado, se encuentra también un archivo ‘sonar project.properties’ con un ejemplo de configuración de análisis Cobol.
Primero, tenemos que definir unos parámetros genéricos como el nombre o la versión del proyecto así que el lenguaje y, por último, la ubicación del código en el archivo descargado:

  • sources=src
  • sonar.cobol.copy.directories=copybooks

Pero falta algo: ¿cómo Sonar puede saber dónde encontrar estos directorios? Los copié en mi entorno de análisis en una carpeta C:\SRC\Mainframe\SonarCobol\Source. Pues tengo que indicar a Sonar donde buscar el código fuente en este directorio. Lo que voy a hacer con el siguiente parámetro:
project.home=C:\SRC\Mainframe\SonarCobol\Source.

Estos son todos los parámetros que he utilizado, en Jenkins:

Ahora podemos lanzar nuestro análisis y comprobar los resultados.

Verificación del log de análisis

Revisar el log de análisis es un paso necesario en el proceso que hemos implementado. Especialmente en el caso de código fuente Cobol. ¿Por qué?

En primer lugar para comprobar el éxito de nuestro análisis:

Luego, incluso si todo ha ido bien, podemos observar el siguiente Warning:

El fichero Cobol analizado comporte (en la línea 53) una llamada a un Copy book DFHAID. Pero este fichero DFHAID.CPY no se encuentra en la entrega.

Este caso se encuentra con bastante frecuencia. Como hemos visto en el primer post de esta serie, la noción de aplicación no tiene tanto sentido en el mundo Mainframe. Este Copy-book puede ser utilizado por muchos otros programas, y encontrarse en un otro módulo. Así que esto no significa que la entrega no es correcta.

Pero es importante identificar a estos Copy-books que faltan con el fin de decirselo a la persona que se encargo de la entrega. Para su información. Si este Copy-book no pertenece al módulo analizado, no tienes que esperar una nueva entrega. Pero no te sorprendes si entregas complementarias ocuren a menudo en el proceso, es usual cuando se analiza código Cobol.

Poedemos comprobar en el dashboard de Sonar los resultados de nuestro análisis:

Y la presencia de defectos en el código:

Hemos visto todas las etapas de un proceso de análisis de código Cobol con Sonar y Jenkins:

  1. Validación de la entrega: comprobar que corresponde con las normas definidas en la reunión de kick-off del proceso. Este paso es necesariamente manual, pero una vez que están automatizados los procesos de entrega y de análisis, podras evitar que se repita este paso. Sin embargo, si tienes que analizar 60 millones de líneas de código Cobol, tomate algún tiempo para completar esta validación.
  2. Configuración del análisis: solamente la primera vez. Pero puedes tener que modificar la configuración cuando la organización de la entrega se cambia, con nuevos directorios de código fuente. A comprobar en la validación de la entrega.
  3. Verificación del log de análisis:
    • Un nuevo archivo con una sintaxis incorrecta o no reconocida por el parser (analizador) puede bloquear el proceso. Verificar que el análisis es ‘Successfull’.
    • Comprobar la presencia de Warnings y listar los Copy-books que faltan. Informar de la ausencia de estos elementos, pero no esperes otra entrega para poner a disposición los resultados en el dashboar Sonar.

Queda – posiblemente – un paso más: presentar estos resultados con una auditoría de calidad del código y un plan de acción. Este será el tema de un nuevo post.

Esta entrada está disponible también en Lire cet article en français y Read that post in english.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *