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
- Opzioni del compilatore obsolete:
- 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 ...
- Opzioni del compilatore non supportate:
- Convenzioni di denominazione:
- Utilizza un nome programma che corrisponde al nome file di origine
- Utilizzare questa regola per contrassegnare qualsiasi divisione
PROGRAM-IDil 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 BYnella clausolaOCCURSche definisce la tabella.
Questa regola non contrassegna i pedici che sono letterali.
- EXEC SQL: evita SELECT *
- Utilizzare questa regola per contrassegnare le istruzioni
EXEC SQLche contengono un'istruzioneSELECT * - EXEC SQL: utilizza una clausola ORDER BY quando si dichiara un cursore
- Utilizzare questa regola per contrassegnare le istruzioni
EXEC SQLche dichiarano un cursore senza specificare una clausolaORDER BYnell'istruzioneSELECTcontenuta. - Specifica 0 RECORDS per le clausole BLOCK CONTAINS nelle voci di descrizione file
- Utilizzare questa regola per contrassegnare le clausole
BLOCK CONTAINSche non specificano0 RECORDS. - Utilizzare una istruzione EVALUATE piuttosto che una istruzione IF nidificata
- Utilizzare questa regola per contrassegnare le istruzioni
IFnidificate. Se la nidificazione è profonda più di un livello, la regola contrassegna solo l'istruzioneIFnidificata 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-3oPACKED-DECIMALe 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,COMPUTATIONALoBINARY.
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
ACCEPTche contengono la fraseFROM CONSOLEoFROM SYSIN.Per contrassegnare tutte le istruzioni
ACCEPTsenza 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
CALLche 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
COPYche contengono la fraseSUPPRESS. - Evita frasi CORRESPONDING
- Utilizzare questa regola per contrassegnare le istruzioni
ADD,SUBTRACTeMOVEche contengono una fraseCORRESPONDING. - Evita istruzioni DISPLAY contenenti UPON CONSOLE
- Utilizzare questa regola per contrassegnare le istruzioni
DISPLAYche contengonoUPON 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 istruzioneEXIT.Per contrassegnare tutte le istruzioni
GO TOsenza eccezione, utilizzare la regola Evita istruzioni GO TO. - Evita IF senza ELSE
- Utilizzare questa regola per contrassegnare le istruzioni
IFche non contengono una clausolaELSE. - 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 istruzioniPERFORMtrannePERFORM section-nameoPERFORM section-name-1 THRU section-name-2. Le istruzioniPERFORMin linea e le istruzioniPERFORMche fanno riferimento ai paragrafi sono contrassegnate. - Evita clausole RESERVE nei paragrafi FILE-CONTROL
- Utilizzare questa regola per contrassegnare le clausole
RESERVEnei paragrafiFILE-CONTROL. - Evita istruzioni letterali STOP RUN e STOP
- Utilizzare questa regola per contrassegnare le istruzioni letterali
STOP RUNeSTOP. - Evitare frasi THRU nelle istruzioni PERFORM
- Utilizzare questa regola per contrassegnare le istruzioni
PERFORMche includono una fraseTHRU. - 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
SECTIONnella 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 CICSche specifica l'opzioneNOHANDLEe non è seguita da una istruzioneIFoEVALUATEche controlla il valore di EIBRESP.L'istruzioneEXEC CICSviene contrassegnata se non è seguita da delle seguenti istruzioni:- Un'istruzione
IFoEVALUATEche fa riferimento a EIBRESP - Un'istruzione
PERFORMche porta a un blocco di codice la cui prima istruzione è un'istruzioneIFoEVALUATEche fa riferimento a EIBRESP
- Un'istruzione
- 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 funzioneDFHRESP, nei seguenti contesti:- In qualsiasi condizione di relazione
- In qualsiasi unità
WHENdi un'istruzioneSELECTin cui l'elemento dati è l'oggetto di selezione
Questa regola esamina tutti
EXEC CICSi 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 istruzioniIF,ELSEeEVALUATE WHEN. Se vengono trovate delle corrispondenze e se viene effettuato un controllo di uguaglianza rispetto a qualsiasi altro elemento diverso dalla macroDFHRESP, la condizione di relazione viene registrata come una violazione della regola. Inoltre, qualsiasi istruzioneEVALUATEche utilizza la variabile di risposta come condizioneWHATha le sue clausoleWHENesaminate. Se contengono elementi diversi dai riferimenti alla macroDFHRESP, le clausoleWHENvengono contrassegnate come violazioni di regole. EXEC CICS: utilizzare l'opzione RESP- Utilizzare questa regola per contrassegnare i comandi
EXEC CICSche non includono l'opzione RESP .Questa regola esamina tutti i blocchi
EXEC CICSe 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 SQLche non sono seguite da un'istruzioneIFo da un'istruzioneEVALUATEche controlla il valore di SQLCODE.L'istruzioneEXEC SQLviene contrassegnata se non è seguita da delle seguenti istruzioni:- Un'istruzione
IFoEVALUATEche fa riferimento a SQLCODE - Un'istruzione
PERFORMche porta a un blocco di codice la cui prima istruzione è un'istruzioneIFoEVALUATEche fa riferimento a SQLCODE
- Un'istruzione
- 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
EVALUATEche non includono una fraseWHEN OTHER. - Utilizza CONTINUE piuttosto che NEXT SENTENCE in un intervallo con ambito
- Utilizzare questa regola per contrassegnare le istruzioni
NEXT SENTENCEche si trovano all'interno dell'ambito di qualsiasi istruzione che ha un carattere di terminazione dell'ambito esplicito. Ad esempio, un'istruzioneNEXT SENTENCEviene contrassegnata se si trova tra un'istruzioneIFe la sua fraseEND-IFcorrispondente.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, WRITEeXML.Per contrassegnare tutte le istruzioni
NEXT SENTENCEsenza 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 DATEeACCEPT 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
SEARCHanzichéSEARCH ALL. - Utilizza frasi THRU nelle istruzioni PERFORM
- Utilizzare questa regola per contrassegnare le istruzioni
PERFORMche non includono una fraseTHRU.