Regole di revisione del codice integrate per l' COBOL

Il componente Code Review supporta regole di revisione del codice integrate per COBOL.

Queste regole sono integrate nel componente Code Review per COBOL e non richiedono parametri. È possibile selezionare queste regole dalle categorie " Enterprise COBOL " ( Controllo delle prestazioni), "Naming Conventions" (Convenzioni di denominazione), "Performance" (Prestazioni) e "Program Structures" (Strutture dei programmi) nella finestra di configurazione dell'analisi del software. Per ulteriori informazioni sull'utilizzo di questa finestra, consultare Creazione di una configurazione di analisi software.

  • Enterprise COBOL:
    Evita gli elementi linguistici obsoleti in Enterprise COBOL 5.1
    Utilizzare questa regola per contrassegnare qualsiasi elemento di linguaggio obsoleto in IBM® Enterprise COBOL for z/OS®. I seguenti elementi sono contrassegnati:
    • Opzioni del compilatore obsolete:
      • PROCDATI
      • LIB
      • NOLIB
      • NOCMPR2
      • NOOPTIMIZE o NOOPT
      • NUMPROC, sottoopzione MIG
      • OPTIMIZE o OPT, opzioni secondarie FULL, STD e nessuno
      • DIMENSIONE, opzione secondaria MAX
      • TEST, sottoopzioni HOOK, NOHOOK, SEPARATE, NOSEPARATE
      • XMLPARSE
      • FINESTRAANNO

    Evitare elementi linguistici non supportati in Enterprise COBOL 5.1
    Utilizzare questa regola per contrassegnare qualsiasi elemento del linguaggio non supportato in IBM Enterprise COBOL for z/OS. I seguenti elementi sono contrassegnati:
    • Opzioni del compilatore non supportate:
      • EVENTI
      • FDUMP
      • ALSAAA
      • SIGN PFD
      • RES
      • TEST, sottoopzioni ALL, BLOCK, PATH, STMT, NONE, SYM, NOSYM
    • Voce descrizione dati, clausola DATEFORMAT
    • Funzioni intrinseche non supportate:
      • DATAEVAL
      • DATA UNI
      • FINESTRAANNO
    • Dichiarazioni etichetta non supportate:
      • VAI A ALTRO - ETICHETTE
      • USO ...Dopo...PROCEDURA ETICHETTA ...

  • Convenzioni di denominazione:
    Utilizza un nome programma che corrisponde al nome file di origine
    Utilizzare questa regola per contrassegnare qualsiasi divisione PROGRAM-ID il cui nome programma è diverso dal nome file di origine. L'estensione file, se presente, del file di origine viene esclusa dal confronto.
  • Prestazioni:

    Evita istruzioni INITIALIZE. Utilizza istruzioni MOVE o clausole VALUE semplici.
    Utilizzare questa regola per contrassegnare le istruzioni INITIALIZE .
    Evita frasi OCCURS DEPENDING ON
    Utilizzare questa regola per contrassegnare le frasi OCCURS DEPENDING ON .
    Evitare di utilizzare dei subscript per accedere a una tabella. Utilizza indici.
    Utilizzare questa regola per contrassegnare qualsiasi elemento dati con le seguenti caratteristiche:
    • Viene utilizzato come deponente per accedere a un elemento della tabella
    • Non è specificato in una frase INDEXED BY nella clausola OCCURS che definisce la tabella.

    Questa regola non contrassegna i pedici che sono letterali.

    EXEC SQL: evita SELECT *
    Utilizzare questa regola per contrassegnare le istruzioni EXEC SQL che contengono un'istruzione SELECT *
    EXEC SQL: utilizza una clausola ORDER BY quando si dichiara un cursore
    Utilizzare questa regola per contrassegnare le istruzioni EXEC SQL che dichiarano un cursore senza specificare una clausola ORDER BY nell'istruzione SELECT contenuta.
    Specifica 0 RECORDS per le clausole BLOCK CONTAINS nelle voci di descrizione file
    Utilizzare questa regola per contrassegnare le clausole BLOCK CONTAINS che non specificano 0 RECORDS.
    Utilizzare una istruzione EVALUATE piuttosto che una istruzione IF nidificata
    Utilizzare questa regola per contrassegnare le istruzioni IF nidificate. Se la nidificazione è profonda più di un livello, la regola contrassegna solo l'istruzione IF nidificata più esterna.

    Confrontare il modello Evitare la nidificazione di istruzioni IF più profonde di un numero specificato di livelli.

    Utilizza un numero dispari di cifre in una definizione di dati COMP-3 o PACKED-DECIMAL
    Utilizzare questa regola per contrassegnare qualsiasi definizione di dati dichiarata come tipo COMP-3 o PACKED-DECIMAL e non contiene un numero dispari di cifre.
    Utilizza sottoscrizioni in binario
    Utilizzare questa regola per contrassegnare qualsiasi elemento dati con le seguenti caratteristiche:
    • Viene utilizzato come pedice per accedere a un elemento della tabella.
    • Non viene dichiarato con un utilizzo di COMP, COMPUTATIONALo BINARY.

    Questa regola non contrassegna i pedici che sono letterali.

  • Strutture del programma

    Evita istruzioni ACCEPT
    Utilizzare questa regola per contrassegnare tutte le istruzioni ACCEPT .

    Confrontare la regola Evita istruzioni ACCEPT contenenti FROM CONSOLE o FROM SYSIN.

    Evita istruzioni ACCEPT contenenti FROM CONSOLE o FROM SYSIN
    Utilizzare questa regola per contrassegnare le istruzioni ACCEPT che contengono la frase FROM CONSOLE o FROM SYSIN.

    Per contrassegnare tutte le istruzioni ACCEPT senza eccezione, utilizzare la regola EVITA ISTRUZIONI ACCEPT.

    Evita istruzioni ALTER
    Utilizzare questa regola per contrassegnare le istruzioni ALTER .
    Evitare le istruzioni CALL con una costante letterale nome programma.
    Utilizzare questa regola per contrassegnare le istruzioni CALL che specificano il nome programma come una costante letterale.
    Evita istruzioni CANCEL
    Utilizzare questa regola per contrassegnare le istruzioni CANCEL .
    Evita istruzioni COPY SUPPRESS
    Utilizzare questa regola per contrassegnare le istruzioni COPY che contengono la frase SUPPRESS .
    Evita frasi CORRESPONDING
    Utilizzare questa regola per contrassegnare le istruzioni ADD, SUBTRACTe MOVE che contengono una frase CORRESPONDING .
    Evita istruzioni DISPLAY contenenti UPON CONSOLE
    Utilizzare questa regola per contrassegnare le istruzioni DISPLAY che contengono UPON CONSOLE.
    Evita istruzioni ENTRY
    Utilizzare questa regola per contrassegnare le istruzioni ENTRY .
    Evita istruzioni EXIT PROGRAM
    Utilizzare questa regola per contrassegnare le istruzioni EXIT PROGRAM .
    Evita istruzioni GO TO
    Utilizzare questa regola per contrassegnare tutte le istruzioni GO TO .

    Confrontare le istruzioni Evita GO TO, tranne quelle che fanno riferimento a un paragrafo di uscita.

    Evita istruzioni GO TO, fatta eccezione per quelle che fanno riferimento a un paragrafo EXIT
    Utilizzare questa regola per contrassegnare tutte le istruzioni GO TO , tranne le istruzioni che trasferiscono il controllo ad un paragrafo di uscita. Un paragrafo di uscita è un paragrafo che contiene solo una istruzione EXIT .

    Per contrassegnare tutte le istruzioni GO TO senza eccezione, utilizzare la regola Evita istruzioni GO TO.

    Evita IF senza ELSE
    Utilizzare questa regola per contrassegnare le istruzioni IF che non contengono una clausola ELSE .
    Evita frasi NEXT SENTENCE
    Utilizzare questa regola per contrassegnare tutte le frasi NEXT SENTENCE .

    Confrontare la regola Utilizza CONTINUE piuttosto che NEXT FRASE all'interno di un intervallo con ambito.

    Evita PERFORM, fatta eccezione per la sezione PERFORM
    Utilizzare questa regola per contrassegnare tutte le istruzioni PERFORM , tranne le istruzioni che contengono solo sezioni.
    Nota: questa regola contrassegna tutte le istruzioni PERFORM tranne PERFORM section-name o PERFORM section-name-1 THRU section-name-2. Le istruzioni PERFORM in linea e le istruzioni PERFORM che fanno riferimento ai paragrafi sono contrassegnate.
    Evita clausole RESERVE nei paragrafi FILE-CONTROL
    Utilizzare questa regola per contrassegnare le clausole RESERVE nei paragrafi FILE-CONTROL .
    Evita istruzioni letterali STOP RUN e STOP
    Utilizzare questa regola per contrassegnare le istruzioni letterali STOP RUN e STOP .
    Evitare frasi THRU nelle istruzioni PERFORM
    Utilizzare questa regola per contrassegnare le istruzioni PERFORM che includono una frase THRU .
    Evita di utilizzare voci di livello 88 nelle descrizioni di dati
    Utilizzare questa regola per contrassegnare le descrizioni dei dati che utilizzano voci level-88 . Ogni voce level-88 è contrassegnata.
    Evita di utilizzare più di una istruzione EXIT per sezione
    Utilizzare questa regola per contrassegnare le sezioni che contengono più di un'istruzione EXIT .
    Evita l'utilizzo di SECTION nella divisione di procedura
    Utilizzare questa regola per contrassegnare qualsiasi dichiarazione SECTION nella divisione della procedura.
    Evitare istruzioni XML PARSE
    Utilizzare questa regola per contrassegnare le istruzioni XML PARSE .
    EXEC CICS®: controllare EIBRESP dopo NOHANDLE
    Utilizzare questa regola per contrassegnare qualsiasi istruzione EXEC CICS che specifica l'opzione NOHANDLE e non è seguita da una istruzione IF o EVALUATE che controlla il valore di EIBRESP.
    L'istruzione EXEC CICS viene contrassegnata se non è seguita da delle seguenti istruzioni:
    • Un'istruzione IF o EVALUATE che fa riferimento a EIBRESP
    • Un'istruzione PERFORM che porta a un blocco di codice la cui prima istruzione è un'istruzione IF o EVALUATE che fa riferimento a EIBRESP
    EXEC CICS: utilizza DFHRESP per controllare il valore di restituzione
    Questa regola si applica agli elementi dati utilizzati come parametro RESP o RESP2 di un comando EXEC CICS .
    Utilizzare questa regola per contrassegnare un confronto tra un elemento dati di questo tipo e qualsiasi elemento diverso dal valore di ritorno di una chiamata di funzione DFHRESP , nei seguenti contesti:
    • In qualsiasi condizione di relazione
    • In qualsiasi unità WHEN di un'istruzione SELECT in cui l'elemento dati è l'oggetto di selezione

    Questa regola esamina tutti EXEC CICS i blocchi per la gestione delle eccezioni da parte di RESP() o RESP2() e viene registrata la definizione COBOL e della variabile utilizzata. Questa variabile viene ricercata in Tutte le condizioni di relazione, come le condizioni nelle istruzioni IF, ELSEe EVALUATE WHEN . Se vengono trovate delle corrispondenze e se viene effettuato un controllo di uguaglianza rispetto a qualsiasi altro elemento diverso dalla macro DFHRESP , la condizione di relazione viene registrata come una violazione della regola. Inoltre, qualsiasi istruzione EVALUATE che utilizza la variabile di risposta come condizione WHAT ha le sue clausole WHEN esaminate. Se contengono elementi diversi dai riferimenti alla macro DFHRESP , le clausole WHEN vengono contrassegnate come violazioni di regole.

    EXEC CICS: utilizzare l'opzione RESP
    Utilizzare questa regola per contrassegnare i comandi EXEC CICS che non includono l'opzione RESP .

    Questa regola esamina tutti i blocchi EXEC CICS e verifica la presenza di un'opzione RESP() . Se non è presente alcuna opzione, il blocco viene contrassegnato come una violazione.

    EXEC SQL: controlla il valore di SQLCODE dopo una istruzione EXEC SQL
    Utilizzare questa regola per contrassegnare tutte le istruzioni EXEC SQL che non sono seguite da un'istruzione IF o da un'istruzione EVALUATE che controlla il valore di SQLCODE.
    L'istruzione EXEC SQL viene contrassegnata se non è seguita da delle seguenti istruzioni:
    • Un'istruzione IF o EVALUATE che fa riferimento a SQLCODE
    • Un'istruzione PERFORM che porta a un blocco di codice la cui prima istruzione è un'istruzione IF o EVALUATE che fa riferimento a SQLCODE
    Utilizza un paragrafo EXIT in ogni sezione
    Utilizzare questa regola per contrassegnare le sezioni che non contengono un paragrafo di uscita. Un paragrafo di uscita è un paragrafo che contiene solo una istruzione EXIT .
    Utilizza una frase WHEN OTHER con una istruzione EVALUATE
    Utilizzare questa regola per contrassegnare le istruzioni EVALUATE che non includono una frase WHEN OTHER .
    Utilizza CONTINUE piuttosto che NEXT SENTENCE in un intervallo con ambito
    Utilizzare questa regola per contrassegnare le istruzioni NEXT SENTENCE che si trovano all'interno dell'ambito di qualsiasi istruzione che ha un carattere di terminazione dell'ambito esplicito. Ad esempio, un'istruzione NEXT SENTENCE viene contrassegnata se si trova tra un'istruzione IF e la sua frase END-IF corrispondente.

    Le istruzioni che hanno un carattere di terminazione dell'ambito esplicito includono ADD, CALL, COMPUTE, DELETE, DIVIDE, EVALUATE, IF, INVOKE, MULTIPLY, PERFORM, READ, RETURN, REWRITE, SEARCH, START, STRING, SUBTRACT, UNSTRING, WRITEe XML.

    Per contrassegnare tutte le istruzioni NEXT SENTENCE senza eccezione, utilizzare la regola EVITA FRASI SUCCESSIVE.

    Utilizza CURRENT-DATE piuttosto che ACCEPT DATE o ACCEPT TIME
    Utilizzare questa regole per contrassegnare le istruzioni ACCEPT DATE e ACCEPT TIME .
    Utilizzare i numeri di livello nella sequenza 01, 05, 10, 15, ...
    Utilizzare questa regola per contrassegnare le definizioni della struttura dati che contengono numeri di livello con le seguenti caratteristiche:
    • Non sono in sequenza ascendente.
    • Non hanno un valore di 1 o un multiplo di 5.
    Utilizza SEARCH ALL piuttosto che SEARCH per eseguire una ricerca in una tabella
    Utilizzare questa regola per contrassegnare le ricerche della tabella che utilizzano SEARCH anziché SEARCH ALL.
    Utilizza frasi THRU nelle istruzioni PERFORM
    Utilizzare questa regola per contrassegnare le istruzioni PERFORM che non includono una frase THRU .