En este artículo vamos a aprender a analizar código utilizando la herramienta de diagnóstico del Toad for Oracle llamada “Code Analysis”.

Esta herramienta muestra una serie de métricas estándares de la industria que son muy útiles para determinar lo siguiente:

  • Si el código contiene errores
  • El nivel de complejidad del código PL/SQL y cualquier código SQL
  • Si la rutina contiene SQL y el tipo de SQL (como DML)
  • Cuantas líneas de código hay en la rutina
  • Si el código sigue las reglas

Por ejemplo, esta herramienta lo puede utilizar un gerente de proyectos para asignar desarrolladores para un nuevo proyecto. Estos informes pueden evaluar rápidamente el tipo de código y ayudar al gerente de proyectos a decidir quién en términos del nivel de habilidad se requeriría para un proyecto.

Por otro lado, los desarrolladores pueden utilizar esta herramienta de análisis para establecer por ejemplo un estado de referencia del código que están a punto de trabajar y luego compararlo con los mismos elementos del informe una vez que se haya completado la tarea de programación.

La información que brinda esta herramienta se puede utilizar para ayudar a los desarrolladores a asegurarse de que no cometan ningún error. Esta característica también se puede usar para evaluar paquetes de software basados en el código Oracle y comparar el código entre las soluciones que se están considerando.

A continuación, vamos a abrir esta herramienta en el Toad for Oracle.

Seleccionamos desde el menú Database > Diagnose > Code Analysis 

 

Podemos analizar paquetes, funciones y procedimientos. Por ejemplo, para este demo vamos a trabajar en el análisis de un paquete llamado MINUEVOPAQUETE.

Para cargar todos los paquetes que tenemos disponibles en nuestro esquema seleccionamos el icono “Load Objects”. 

Luego seleccionamos “Load My Packages”. 

Seleccionamos el paquete que queremos analizar. Podemos observar que se abren dos paneles, en el lado de la izquierda, vemos la ficha de Resultados del paquete seleccionado, en el cual aparecerá los resultados del análisis después que ejecutemos la herramienta. Y en el lado de la derecha, podemos ver el código del paquete. En este ejemplo vamos a analizar un paquete simple a modo de demostración. 

En la ficha de Reporte, que se encuentra al lado de la ficha de Resultados, podemos ver una tabla de contendidos. 

Esta tabla de contenidos nos muestra las definiciones de las métricas que utiliza esta herramienta de análisis. Cada una de las métricas están explicadas en la tabla de contenidos en detalle de cómo son utilizadas por la herramienta.

  • Número de Declaraciones: La vista USER_OBJECT_SIZE contiene información sobre el tamaño del código fuente, el tamaño del código analizado y el tamaño del código compilado. 

  • Complejidad Computacional (Volumen de Halstead): esta métrica se desarrolló para medir la complejidad de un módulo de programa directamente desde el código fuente, con énfasis en la complejidad computacional. Las medidas de Halstead se basan en cuatro números escalares derivados directamente del código fuente de un programa:

– n1 = la cantidad de operadores distintos
– n2 = la cantidad de operandos distintos
– N1 = el número total de operadores
– N2 = el número total de operandos 

  • Complejidad Ciclomática (McCabe): La complejidad de Cyclomatic es una métrica más simple y proporciona un solo número ordinal que se puede comparar con la complejidad de otros programas, es decir, mide la cantidad de lógica de decisión en un solo módulo de software. Se usa con dos propósitos relacionados en la metodología de prueba estructurada. Primero, da la cantidad de pruebas recomendadas para el software. En segundo lugar, se usa durante todas las fases del ciclo de vida del software, comenzando con el diseño, para mantener el software confiable, comprobable y manejable. La complejidad de Cyclomatic se basa completamente en la estructura del gráfico de flujo de control del software. 

  • Índice de Mantenimiento (MI): Esta métrica pretende reflejar cuan fácil o difícil será mantener el código. Es como un predictor de mantenibilidad en el tiempo el cual está destinado a ayudar a reducir o invertir la tendencia de un sistema hacia la “entropía del código” o la integridad degradada, y a indicar cuándo se vuelve más barato y/o menos arriesgado reescribir el código que cambiarlo. Esta métrica es la combinación de Volumen de Halstead y McCabe. 

 

Conociendo estas métricas ya estamos en condiciones de realizar el análisis de nuestro paquete.

Pasamos a la ficha de Resultados, siempre teniendo seleccionado el paquete que queremos analizar.

Hacemos clic en el botón de triangulo verde “Analyze code for all selected ítems” o también podemos presionar la techa F9. 

Al ejecutar el análisis del paquete podemos visualizar las métricas en la ficha de Resultados:

– Halstead Volume: 27 (código fácil de mantener y de comprender)

– McCabe’s Cyclomatic: 2 (es un programa muy simple)

– Maintainability Index: 122.17 (el código es fácil de mantener)

– Toad Code Rating (TCR): 1 (tiene 4 valores posibles: del 1 al 4, siendo el 1 el mejor y el 4 el peor) 

A simple vista con este análisis podemos determinar que este código es fácil de mantener y es fácil de comprender por el desarrollador. Entonces el gerente de proyecto rápidamente puede determinar qué desarrollador de su equipo es el adecuado para asignarle el mantenimiento de este código.

Vamos a analizar rápidamente otro código más complejo, en este caso el paquete se llama EBA_PROJ_STATUS_API. 

Podemos observar los valores de las siguientes métricas:

– Halstead Volume: 1,667 (el código es un poco más complejo, un poco más desafiante y tomaría un poco más de habilidades del desarrollador para poder cambiar el contenido del código)

– McCabe’s Cyclomatic: 26 (es un programa complejo)

– Maintainability Index: 59.08 (el código es difícil de mantener)

– Toad Code Rating (TCR): 3 (es una clasificación simple que nos otorga el Toad)

Además de las métricas del código antes mencionadas disponemos de mucha información en la ficha de Resultados, como el Summary, Rule Violations, Properties el cual nos muestra información de cursores, declaraciones, análisis de DML, análisis de funciones, procedimientos, etc.

Una sección interesante del Resumen es el Análisis del Módulo, que nos muestra a simple vista la cantidad de líneas de comentarios, la cantidad de líneas ejecutables, el total de líneas, la cantidad de declaraciones, la cantidad de declaraciones de tipo DML, etc.  

Finalmente, podemos ver en la zona de la cuadrícula, todas las métricas más importantes de los paquetes que acabamos de analizar, destacados por colores, el cual nos permite ver rápidamente si el código es fácil o no de mantener por el desarrollador. 

Te invito a que utilices esta gran funcionalidad que nos provee el Toad for Oracle para analizar nuestros códigos y conocer cómo estamos desarrollando nuestros módulos de programas.

About the Author

Clarisa Maman Orfali

Clarisa is a System Engineer with more than 24 years of experience as a developer, teacher, and consultant in Information Technology. She was a Founder and CEO between 2013 to 2020 at ClarTech Solutions, Inc., a consulting firm specializing in Oracle APEX and Open Source technologies. Clarisa entered the world of Oracle technologies in 2009. After a few years, she discovered the power of application development with Oracle Application Express (APEX) and specialized in that area. Clarisa is from Argentina, and she is living and working in Irvine, California, in the United States. She's also a Co-Founder of the Argentina Oracle User Group (AROUG). In addition, she had actively participated in large and popular events such as the OTN Tour Argentina and Oracle APEX Tour Latin America after called Oracle Developer Tour. She's also authored the first three Spanish books about Oracle Application Express and recorded and published several Online Video Courses. She has a great passion for Oracle technologies and wants to expand that passion and influence, transferring her knowledge and experience to the entire Latin American and worldwide Oracle communities. You can always contact her through her Twitter account (@Clari707). Clarisa loves spending time with her family by enjoying outdoor activities with her two adored children, Melanie and Nicolas, as well as hanging out with her friends. Also, she loves traveling with her husband Julio worldwide and to takes new challenges at every moment of her life.

Start the discussion at forums.toadworld.com