El componente Revisión de código soporta reglas de revisión de código incorporadas para COBOL.
Estas reglas están incorporadas en el componente Revisión de código para COBOL y no necesitan
parámetros. Puede seleccionar estas reglas de entre las categorías Convenios de denominación, Rendimiento y Estructuras de programa en el editor de configuraciones de
análisis de software. Para obtener más información sobre cómo utilizar este editor, consulte
Creación de una configuración de análisis de software.
- Convenios de denominación:
- Utilizar un nombre de programa que coincide con el nombre de archivo fuente
- Utilice esta regla para señalar cualquier división de PROGRAM-ID cuyo nombre de programa del
nombre del archivo fuente correspondiente. La extensión de archivo, si existe, del archivo fuente queda excluida de la
comparación.
- Rendimiento:
- Evitar las sentencias INITIALIZE. Utilizar sentencias MOVE elementales o cláusulas VALUE.
- Utilice esta regla para señalar sentencias INITIALIZE.
- Evitar frases OCCURS DEPENDING ON
- Utilice esta regla para señalar frases OCCURS DEPENDING ON.
- Evitar la utilización de subíndices para acceder a una tabla. Utilizar índices.
- Utilice esta regla para señalar cualquier elemento de datos que tenga las características siguientes:
- Se utiliza como subíndice para acceder a un elemento de tabla
- No está especificado en una frase INDEXED BY, en la cláusula OCCURS que define la
tabla.
Esta regla no señala subíndices que sean literales.
- EXEC SQL: evitar SELECT *
- Utilice esta regla para señalar sentencias EXEC SQL que contengan una sentencia SELECT
*
- EXEC SQL: utilizar una cláusula ORDER BY al declarar un cursor
- Utilice esta regla para marcar sentencias EXEC SQL que declaran un cursor sin especificar una
cláusula ORDER BY en la sentencia SELECT contenía.
- Especificar 0 RECORDS para cláusulas BLOCK CONTAINS en entradas de descripción de archivo
- Utilice esta regla para señalar cláusulas BLOCK CONTAINS que no especifican 0
RECORDS.
- Utilizar una sentencia EVALUATE en lugar de una sentencia IF anidada
- Utilice esta regla para señalar sentencias IF anidadas. Si la anidación tiene más de un nivel de
profundidad, la regla señala solo la sentencia IF anidada exterior.
Compare la plantilla
Evitar anidación de sentencias IF a mayor profundidad que un número de niveles especificado.
- Utilizar un número impar de dígitos en una definición de datos COMP-3 o PACKED-DECIMAL
- Utilice esta regla para señalar cualquier definición de datos datos declarada como tipo COMP-3 o
PACKED-DECIMAL que no contenga un número impar de dígitos.
- Utilizar subíndices binarios
- Utilice esta regla para señalar cualquier elemento de datos que tenga las características siguientes:
- Se utiliza como subíndice para acceder a un elemento de tabla.
- No se declara con un uso de COMP, COMPUTATIONAL o BINARY.
Esta regla no señala subíndices que sean literales.
- Estructuras de programa:
- Evitar las sentencias ACCEPT
- Utilice esta regla para señalar todas las sentencias ACCEPT.
Compare la regla Evitar
sentencias ACCEPT que contengan FROM CONSOLE o FROM SYSIN.
- Evitar sentencias ACCEPT que contengan FROM CONSOLE o FROM SYSIN
- Utilice esta regla para señalar sentencias ACCEPT que contengan la frase FROM
CONSOLE o FROM SYSIN.
Para señalar todas las sentencias ACCEPT sin
excepción, utilice la regla Evitar sentencias ACCEPT.
- Evitar sentencias ALTER
- Utilice esta regla para señalar sentencias ALTER.
- Evitar sentencias CALL con un nombre de nombre de programa.
- Utilice esta regla para señalar sentencias CALL que especifican el nombre de programa como un
literal.
- Evitar sentencias CANCEL
- Utilice esta regla para señalar sentencias CANCEL.
- Evitar las sentencias COPY SUPPRESS
- Utilice esta regla para señalar sentencias COPY que contienen la frase SUPPRESS.
- Evitar las frases CORRESPONDING
- Utilice esta regla para señalar sentencias ADD, SUBTRACT y MOVE
que contengan una frase CORRESPONDING.
- Evitar sentencias DISPLAY que contienen UPON CONSOLE
- Utilice esta regla para señalar sentencias DISPLAY que contienen UPON CONSOLE.
- Evitar sentencias ENTRY
- Utilice esta regla para señalar sentencias ENTRY.
- Evitar sentencias EXIT PROGRAM
- Utilice esta regla para señalar sentencias EXIT PROGRAM.
- Evitar sentencias GO TO
- Utilice esta regla para señalar todas las sentencias GO TO.
Compare la regla Evitar
sentencias GO TO, excepto las que hacen referencia a un párrafo de salida.
- Evitar sentencias GO TO, excepto las que hacen referencia a un párrafo de salida
- Utilice esta regla para señalar todas las sentencias GO TO, excepto las sentencias que transfieren
el control a un párrafo de salida. Un párrafo de salida es un párrafo que contiene solo una sentencia
EXIT.
Para señalar todas las sentencias GO TO sin excepción, utilice la regla
Evitar sentencias GO TO.
- Evitar IF sin ELSE
- Utilice esta regla para señalar sentencias IF que no contengan una cláusula ELSE.
- Evitar frases NEXT SENTENCE
- Utilice esta regla para señalar todas las frases NEXT SENTENCE.
Compare la regla
Utilizar CONTINUE en lugar de NEXT SENTENCE dentro de un rango con ámbito.
- Evitar PERFORM, excepto la sección PERFORM
- Utilice esta regla para señalar todas las sentencias PERFORM, excepto las sentencias que contienen
solo secciones.
Nota: Esta regla señala todas las sentencias PERFORM excepto PERFORM
nombre-sección o PERFORM nombre-sección-1 THRU
nombre-sección-2.
Se señalan las sentencias PERFORM en línea y las sentencias PERFORM que hacen
referencia a párrafos.
- Evitar cláusulas RESERVE en párrafos FILE-CONTROL
- Utilice esta regla para señalar cláusulas RESERVE en párrafos FILE-CONTROL.
- Evitar sentencias literales STOP RUN y STOP
- Utilice esta regla para señalar sentencias literales STOP RUN y STOP.
- Evitar frases THRU en sentencias PERFORM
- Utilice esta regla para señalar sentencias PERFORM que incluyen una frase THRU.
- Evitar la utilización de entradas de nivel 88 en descripciones de datos
- Utilice esta regla para señalar descripciones que utilizan entradas de nivel 88. Se señala cada entrada de nivel 88.
- Evitar la utilización de más de una sentencia EXIT por sección
- Utilice esta regla para señalar secciones que contengan más de una sentencia EXIT.
- Evitar utilización de SECTION en la división de procedimiento
- Utilice esta regla para señalar cualesquiera declaraciones de SECTION en la división de
procedimiento.
- Evitar sentencias XML PARSE
- Utilice esta regla para señalar sentencias XML PARSE.
- EXEC CICS: comprobar EIBRESP después de NOHANDLE
- Utilice esta regla para señalar cualquier sentencia EXEC CICS que no va seguida de una sentencia
IF o una sentencia EVALUATE que comprueba el valor de EIBRESP.
Se señala la sentencia EXEC CICS si no
va seguida de una de las sentencias siguientes:
- Una sentencia IF o EVALUATE que hace referencia a EIBRESP
- Una sentencia PERFORM que lleva a un bloque de código cuya primera sentencia es una sentencia
IF o EVALUATE que hace referencia a EIBRESP
- EXEC CICS: utilizar DFHRESP para comprobar el valor de retorno
- Esta regla se aplica a los elementos de datos utilizados como parámetro RESP o
RESP2 de un mandato EXEC CICS.
Utilice esta regla para señalar una comparación
entre un elemento de datos y cualquier otra cosa que no sea el valor de retorno de una llamada de función
DFHRESP en los contextos siguientes:
- En cualquier condición de relación
- En cualquier unidad WHEN de una sentencia SELECT en la que el elemento de datos
sea el sujeto de selección
Esta regla examina todos los bloques de EXEC CICS para el
manejo de excepciones por RESP() o RESP2() y se registra la definición de
COBOL de la variable que se utiliza. Se busca esta variable en todas las condiciones de
relación, como por ejemplo las condiciones en sentencias IF, ELSE y EVALUATE
WHEN. Si se encuentran coincidencias y se realiza una comprobación de igualdad contra cualquier otra cosa que
no sea la macro DFHRESP, la condición de relación se registra como una violación de la regla. Además,
se examinan las cláusulas WHEN de cualquier sentencia EVALUATE que utilice la
variable de respuesta como su condición WHAT. Si contienen cualquier otra cosa que no sean referencias
a la macro DFHRESP, las cláusulas WHEN se señalan como violaciones de la
regla.
- EXEC CICS: utilizar la opción RESP
- Utilice esta regla para señalar mandatos EXEC CICS que no incluyan la
opción de parámetro RESP.
Esta regla examina todos los bloques EXEC
CICS y comprueba que hay una opción RESP() presente. Si no hay ninguna opción presente,
el bloque se señala como una violación.
- EXEC SQL: compruebe el valor de SQLCODE después de una sentencia EXEC SQL
- Utilice esta regla para señalar cualquier sentencia EXEC SQL que no va seguida de una sentencia
IF o una sentencia EVALUATE que comprueba el valor de SQLCODE.
Se señala la sentencia EXEC SQL si no
va seguida de las
sentencias siguientes:
- Una sentencia IF o EVALUATE que hace referencia a SQLCODE
- Una sentencia PERFORM que lleva a un bloque de código cuya primera sentencia es una sentencia
IF o EVALUATE que hace referencia a SQLCODE
- Utilizar un párrafo EXIT en cada sección
- Utilice esta regla para señalar secciones que no contienen un párrafo de salida. Un párrafo de salida es un párrafo que contiene solo una sentencia
EXIT.
- Utilizar una frase WHEN OTHER con una sentencia EVALUATE
- Utilice esta regla para señalar sentencias EVALUATE que no incluyan una frase
EVALUATE.
- Utilizar CONTINUE en lugar de NEXT SENTENCE dentro de un rango con ámbito
- Utilice esta regla para señalar sentencias NEXT SENTENCE que están dentro del ámbito de cualquier
sentencia que tenga un terminador de ámbito explícito. Por ejemplo, una sentencia NEXT SENTENCE
SENTENCE se señala si está entre una sentencia IF y su correspondiente frase END-IF.
Las sentencias que tienen un terminador de ámbito explícito incluyen ADD, CALL, COMPUTE, DELETE, DIVIDE,
EVALUATE, IF, INVOKE, MULTIPLY, PERFORM, READ, RETURN, REWRITE, SEARCH, START, STRING, SUBTRACT, UNSTRING,
WRITE y XML.
Para señalar todas las sentencias NEXT SENTENCE sin
excepción, utilice la regla Eviar frases NEXT SENTENCE.
- Utilizar CURRENT-DATE en lugar de ACCEPT DATE o ACCEPT TIME
- Utilice esta regla para señalar sentencias ACCEPT DATE y ACCEPT TIME.
- Utilizar números de nivel en la secuencia 01, 05, 10, 15, ...
- Utilice esta regla para señalar definiciones de estructura de datos que contengan números de nivel con las
características siguientes:
- No están en secuencia ascendente.
- No tienen un valor de 1 o de un múltiplo de 5.
- Utilizar SEARCH ALL en lugar de SEARCH para buscar en una tabla
- Utilice esta regla para señalar búsquedas en tabla que utilicen SEARCH en lugar de SEARCH ALL.
- Utilizar las frase THRU en sentencias PERFORM
- Utilice esta regla para señalar sentencias PERFORM que no incluyan una frase THRU.