Traducción del artículo original de Freddy Mallet Director de Producto en Sonar Source. Ver el artículo original
La mayoría de los desarrolladores de C, Java, C++, C#, JavaScript,… que lean esta entrada de blog puede que piensen que COBOL está muerto y que SonarSource debería mejor centrarse en lenguajes más actuales como Scala, Go, Dart, etc. Pero en 1997, el grupo Gartner informó de que el 80% de las compañías en el mundo funcionaban con COBOL, con más de 200 mil millones de líneas de código existentes y con aproximadamente 5 mil millones de líneas de código nuevo al año. COBOL se utiliza principalmente en el mercado de la banca y los seguros y, de acuerdo con lo que hemos visto en los últimos años, la erosión de la cantidad de líneas de código COBOL utilizadas en la producción es bastante baja. Así que no es sólo que COBOL todavía no está muerto, sino que necesitará varias décadas para que suceda realmente esta muerte. Lanzamos la primera versión del plugin COBOL a principios de 2010 y este plugin de lenguaje fue, de hecho, el primero en integrar nuestra propia tecnología de análisis de código fuente, incluso antes de Java, C, C++, PL/SQL…, Lo que hace que, en SonarSource, COBOL es, digamos, tecnología líder J.
Extensiones de proveedores múltiples y falta de estructura
El plugin COBOL incorpora más de 130 reglas pero, antes de hablar de esas reglas, hablemos de la amplia gama de dialectos diferentes que COBOL sostiene. En efecto, desde 1959, se han publicado distintas especificaciones del comportamiento del lenguaje y del preprocesador, y la mayoría de los compiladores de COBOL han ampliado esas especificaciones. Así que proporcionar un analizador del código fuente de COBOL preciso conlleva sostener la mayoría de esos dialectos: IBM Enterprise Cobol, HP Tandem, Bull SMOC, IBM COBOL II, IBM Cobol 400, IBM ILE COBOL, Microfocus Acucobol, OpenCobol…, lo cual es el caso de nuestro plugin. Por otro lado, para aquellos de vosotros que no estéis familiarizados con el código fuente de COBOL: imaginemos un archivo fuente C, que contiene 20.000 líneas de código, sin funciones, y sólo con algunas etiquetas para agrupar sentencias y hacer posible una “emulación” del concepto de función. Dicho así, supongo que todo el mundo puede entender lo fácil que puede ser escribir programas COBOL imposibles de mantener y poco fiables.
Necesidad de herramientas
A partir de esta observación, la gestión de un directorio de miles de programas COBOL, cada uno de los cuales contienen miles de líneas de código COBOL, sin ningún tipo de herramientas para detectar automáticamente los defectos de calidad y los errores potenciales es un poco arriesgado. El plugin SonarSource COBOL permite analizar continuamente millones de líneas de código COBOL para detectar este tipo de incidencias.
A continuación exponemos varios ejemplos de las reglas dadas por el plugin:
- Detección de párrafos, secciones y datos sin usar.
- Detección de sentencias de control de flujo PERFORM ... THRU ... incorrectas, donde el procedimiento inicial se encuentra tras el final de otro en el código fuente, lo que conduce a un comportamiento inesperado.
- Detección de las sentencias GO TO que transfieren el control fuera del módulo actual, lo que conduce a un código desestructurado.
- Copia de variables a otras más pequeñas, lo que puede conducir a la pérdida de datos.
- Copia de un valor alfanumérico a uno numérico, lo que también puede conducir a la pérdida de datos.
- Detección de las sentencias EVALUATE que no tienen la cláusula WHEN OTHER (similar a un IF sin un ELSE).
- Detección de archivos que se quedan abiertos y nunca se cierran.
Y de entre las más de 130 reglas, 30 o más son referentes al código SQL que puede ser incrustado en los programas COBOL. Una de esas reglas hace el seguimiento de las condiciones “LIKE” que comienzan con *. Otra sigue el uso de expresiones aritméticas y funciones escalares en las condiciones WHERE. Y por último, pero no menos importante, a continuación mostramos algunas otras características clave de SonarSource COBOL plugin:
- Los copybooks se analizan en el contexto de cada programa COBOL y las evidencias se muestran directamente en ellos.
- El coste de remediación para solucionar evidencias se calcula con ayuda del método SQALE: www.sqale.org.
- Incluso en aplicaciones COBOL grandes que contienen miles de programas COBOL y, por tanto, millones de líneas de código y miles de evidencias, el seguimiento de nuevas evidencias en el código fuente nuevo o actualizado es fácil.
- Las duplicaciones de PROCEDURE DIVISON entre todos los programas COBOL también pueden ser rastreadas fácilmente.
- Para asegurarse de que el código cumple con prácticas de codificación interna, una API de Java permite el desarrollo de reglas personalizadas.
¿Pero cuán difícil es evaluar este plugin COBOL?
- Sólo tienes que descargar el archivo jar del plugin desde la página del producto o cargar el plugin desde el centro de actualizaciones de tu instancia de SonarQube: http://www.sonarsource.com/products/plugins/languages/cobol/
- Solicitar una licencia de evaluación.
- Y comenzar a analizar tu propio código fuente COBOL.
Así que sí, Cobol está vivo, y el plugin COBOL de SonarSource ayuda a que el lenguaje sea aún más fiable y fácil de mantener.