Le composant de révision de code (Code Review) prend en charge les règles de révision de code intégrées pour COBOL.
Ces règles sont intégrées au composant de révision de code Code Review for COBOL et ne requièrent pas de paramètres. Vous pouvez sélectionner ces règles à partir des catégories Conventions de dénomination, Performances et Structures de programme dans l'éditeur de configuration d'analyse logicielle. Pour plus d'informations sur l'utilisation de cet éditeur, voir Création d'une configuration d'analyse logicielle.
- Conventions de dénomination :
- Utiliser un nom de programme correspondant au nom du fichier source
- Utilisez cette règle pour marquer toute division PROGRAM-ID dont le nom de programme est différent du nom de son fichier source. L'extension, le cas échéant, du fichier source est exclue de la comparaison.
- Performances :
- Eviter les instructions INITIALIZE. Utiliser des instructions MOVE élémentaires ou des clauses VALUE.
- Utilisez cette règle pour marquer les instructions INITIALIZE.
- Eviter les expressions OCCURS DEPENDING ON
- Utilisez cette règle pour marquer les expressions OCCURS DEPENDING ON.
- Eviter l'utilisation d'indices pour accéder à une table. Utiliser des index.
- Utilisez cette règle pour marquer les données élémentaires qui présentent les caractéristiques suivantes :
- Est utilisé comme indice pour accéder à un élément de table
- N'est pas indiqué dans une expression INDEXED BY de la clause OCCURS qui définit la table.
Cette règle ne marque pas les indices qui sont des littéraux.
- EXEC SQL : Eviter SELECT *
- Utilisez cette règle pour marquer les instructions SQL EXEC qui contiennent une instruction SELECT *
- EXEC SQL : Utiliser une clause ORDER BY lors de la déclaration d'un curseur
- Utilisez cette règle pour marquer les instructions SQL EXEC qui déclarent un curseur sans indiquer de clause ORDER BY dans l'instruction SELECT incluse.
- Indiquer 0 RECORDS pour les clauses BLOCK CONTAINS dans les entrées de description de fichier
- Utilisez cette règle pour marquer les clauses BLOCK CONTAINS qui n'indiquent pas 0 RECORDS.
- Utiliser une instruction EVALUATE au lieu d'une instruction IF imbriquée
- Utilisez cette règle pour marquer les instructions IF imbriquées.
Si l'imbrication comporte plusieurs niveaux, la règle marque uniquement l'instruction IF la plus profondément imbriquée.
Comparez le modèle Eviter d'imbriquer les instructions IF au-delà du nombre de niveaux défini.
- Utiliser un nombre impair de chiffres dans une définition de données COMP-3 ou PACKED-DECIMAL
- Utilisez cette règle pour marquer les définitions de données déclarées comme étant de type COMP-3 ou PACKED-DECIMAL et ne contenant pas un nombre impair de chiffres.
- Utiliser des indices binaires
- Utilisez cette règle pour marquer les données élémentaires qui présentent les caractéristiques suivantes :
- Est utilisé comme indice pour accéder à un élément de table.
- N'est pas déclaré en utilisant TERMI, COMPUTATIONAL ou BINARY.
Cette règle ne marque pas les indices qui sont des littéraux.
- Structures de programme :
- Eviter les instructions ACCEPT
- Utilisez cette règle pour marquer toutes les instructions ACCEPT.
Comparez la règle Eviter les instructions ACCEPT contenant FROM CONSOLE ou FROM SYSIN.
- Eviter les instructions ACCEPT contenant FROM CONSOLE ou FROM SYSIN
- Utilisez cette règle pour marquer les instructions ACCEPT qui contiennent l'expression FROM CONSOLE ou FROM SYSIN.
Pour marquer toutes les instructions ACCEPT sans exception, utilisez la règle EVITER les instructions ACCEPT.
- Eviter les instructions ALTER
- Utilisez cette règle pour marquer les instructions ALTER.
- Eviter les instructions CALL avec un nom de programme littéral.
- Utilisez cette règle pour marquer les instructions CALL indiquant un nom de programme sous forme de littéral.
- Eviter les instructions CANCEL
- Utilisez cette règle pour marquer les instructions CANCEL.
- Eviter les instructions COPY SUPPRESS
- Utilisez cette règle pour marquer les instructions COPY contenant l'expression SUPPRESS.
- Eviter les expressions CORRESPONDING
- Utilisez cette règle pour marquer les instructions ADD, SUBTRACT et MOVE contenant une expression CORRESPONDING.
- Eviter les instructions DISPLAY contenant UPON CONSOLE
- Utilisez cette règle pour marquer les instructions DISPLAY contenant UPON CONSOLE.
- Eviter les instructions ENTRY
- Utilisez cette règle pour marquer les instructions ENTRY.
- Eviter les instructions EXIT PROGRAM
- Utilisez cette règle pour marquer les instructions EXIT PROGRAM.
- Eviter les instructions GO TO
- Utilisez cette règle pour marquer les instructions GO TO.
Comparez la règle Eviter les instructions GO TO, à l'exception de celles qui font référence à un paragraphe d'exit.
- Eviter les instructions GO TO, à l'exception de celles qui font référence à un paragraphe d'exit
- Utilisez cette règle pour marquer toutes les instructions GO TO, à l'exception de celles qui transfèrent le contrôle à un paragraphe d'exit. Un paragraphe d'exit est un paragraphe contenant uniquement une instruction EXIT.
Pour marquer toutes les instructions GO TO sans exception, utilisez la règle Eviter les instructions GO TO.
- Eviter IF sans ELSE
- Utilisez cette règle pour marquer les instructions IF qui ne contiennent pas de clause ELSE.
- Eviter les expressions NEXT SENTENCE
- Utilisez cette règle pour marquer toutes les expressions NEXT SENTENCE.
Comparez la règle Utiliser CONTINUE plutôt que NEXT SENTENCE à l'intérieur d'une plage de portée.
- Eviter PERFORM, sauf pour la section PERFORM
- Utilisez cette règle pour marquer toutes les instructions PERFORM, à l'exception des instructions contenant uniquement des sections.
Remarque : Cette règle marque toutes les instructions PERFORM sauf PERFORM nom-section ou PERFORM nom-section-1 THRU nom-section-2. Les instructions PERFORM en ligne et les instructions PERFORM faisant référence à des paragraphes sont marquées.
- Eviter les clauses RESERVE dans les paragraphes FILE-CONTROL
- Utilisez cette règle pour marquer les clauses RESERVE dans les paragraphes FILE-CONTROL.
- Eviter les instructions littérales STOP RUN et STOP
- Utilisez cette règle pour marquer les instructions littérales STOP RUN et STOP.
- Eviter les expressions THRU dans les instructions PERFORM
- Utilisez cette règle pour marquer les instructions PERFORM qui incluent une expression THRU.
- Eviter d'utiliser des entrées de niveau 88 dans les descriptions de données
- Utilisez cette règle pour marquer les descriptions de données qui utilisent des entrées de niveau 88.
Chaque entrée de niveau 88 est marquée.
- Eviter d'utiliser plusieurs instructions EXIT par section
- Utilisez cette règle pour marquer les sections qui contiennent plusieurs instructions EXIT.
- Eviter d'utiliser SECTION dans la division de la procédure
- Utilisez cette règle pour marquer les déclarations SECTION dans la division de la procédure.
- Eviter les instructions XML PARSE
- Utilisez cette règle pour marquer les instructions XML PARSE.
- EXEC CICS : Vérifier EIBRESP après NOHANDLE
- Utilisez cette règle pour marquer les instructions EXEC CICS mentionnant l'option NOHANDLE et n'étant pas suivies d'une instruction IF ou d'une instruction EVALUATE qui vérifie la valeur de EIBRESP.
L'instruction EXEC CICS est marquée si elle n'est pas
suivies par l'une des instructions suivantes :
- Une instruction IF ou EVALUATE faisant référence à EIBRESP
- Une instruction PERFORM conduisant à un bloc de code dont la première instruction est une instruction IF ou EVALUATE faisant référence à EIBRESP
- EXEC CICS : Utiliser DFHRESP
pour vérifier la valeur de retour
- Cette règle s'applique aux données élémentaires utilisées comme paramètre RESP ou RESP2 d'une commande EXEC CICS.
Utilisez cette règle pour marquer une comparaison entre une données élémentaire de ce type et toute valeur autre que la valeur de retour d'un appel de fonction
DFHRESP, dans les contextes suivants :
- Dans n'importe quelle condition de relation
- Dans toute unité WHEN d'une instruction SELECT dans laquelle la donnée élémentaire est le sujet de sélection
Cette règle examine toutes les blocs EXEC CICS en vue de la gestion des exceptions par RESP() ou RESP2() et la définition COBOL de la variable utilisée est enregistrée. Cette variable est recherchée dans toutes les conditions de relation, telles que les conditions dans les instructions IF, ELSE et EVALUATE WHEN. Si des occurrences sont trouvées et si une vérification d'égalité est établie avec tout élément autre que la macro DFHRESP, la condition de relation est enregistrée en tant que violation de règle. De plus, toute instruction EVALUATE utilisant la variable de réponse comme condition WHAT voit ses clauses WHEN examinées. Si elles contiennent des éléments autres que des références à la macro DFHRESP, les clauses WHEN sont marquées comme violations de règle.
- EXEC CICS : Utiliser l'option RESP
- Utilisez cette règle pour marquer les commandes EXEC CICS qui n'incluent pas l'option RESP.
Cette règle examine tous les blocs EXEC CICS et vérifie que l'option RESP() est présente. Si aucune option n'est présente, le bloc est marqué en tant que violation.
- EXEC SQL : Vérifier la valeur de SQLCODE après une instruction EXEC SQL
- Utilisez cette règle pour marquer les instructions EXEC SQL qui ne sont pas suivies d'une instruction IF ou d'une instruction EVALUATE qui vérifie la valeur de SQLCODE.
L'instruction EXEC
SQL est marquée si elle n'est pas
suivie de l'une des instructions suivantes :
- Une instruction IF ou EVALUATE faisant référence à SQLCODE
- Une instruction PERFORM conduisant à un bloc de code dont la première instruction est une instruction IF ou EVALUATE faisant référence à SQLCODE
- Utiliser un paragraphe EXIT dans chaque section
- Utilisez cette règle pour marquer les sections qui ne contiennent pas de paragraphe d'exit. Un paragraphe d'exit est un paragraphe contenant uniquement une instruction EXIT.
- Utiliser une expression WHEN OTHER avec une instruction EVALUATE
- Utilisez cette règle pour marquer les instructions EVALUATE qui n'incluent pas d'expression WHEN OTHER.
- Utiliser CONTINUE au lieu de NEXT SENTENCE à l'intérieur d'une plage de portée
- Utilisez cette règle pour marquer les instructions NEXT SENTENCE qui se trouvent dans la portée d'une instruction ayant une expression d'arrêt explicite. Par exemple, une instruction NEXT SENTENCE est marquée si elle se trouve entre une instruction IF et son expression END-IF correspondante.
Les instructions qui comportent une expression d'arrêt explicite incluent ADD, CALL, COMPUTE, DELETE, DIVIDE, EVALUATE, IF, INVOKE, MULTIPLY, PERFORM, READ, RETURN, REWRITE, SEARCH, START, STRING, SUBTRACT, UNSTRING, WRITE et XML.
Pour marquer toutes les instructions NEXT SENTENCE sans exception, utilisez la règle EVITER les expressions NEXT SENTENCE.
- Utiliser CURRENT-DATE au lieu de ACCEPT DATE ou ACCEPT TIME
- Utilisez cette règle pour marquer les instructions ACCEPT DATE et ACCEPT
TIME.
- Utiliser des numéros de niveau dans la séquence 01, 05, 10, 15...
- Utilisez cette règle pour marquer les définitions de structure de données qui contiennent des numéros de niveau avec les caractéristiques suivantes :
- Ils ne sont pas en ordre croissant.
- Ils n'ont pas pour valeur 1 ou un multiple de 5.
- Utiliser SEARCH ALL au lieu de SEARCH pour effectuer une recherche dans une table
- Utilisez cette règle pour marquer les recherches dans les tables utilisant SEARCH au lieu de SEARCH ALL.
- Utiliser des expressions THRU dans les instructions PERFORM
- Utilisez cette règle pour marquer les instructions PERFORM qui n'incluent pas d'expression THRU.