Coding analysis methods with the COBOL APIs
Use the COBOL APIs to analyze the COBOL language elements that you select for your user-written rules.
About this task
Procedure
To implement the code analysis for a custom rule:
- Open the Plug-in Development perspective.
- In the Package Explorer, right-click
the Java™ source file that was
generated for your custom rule, then click Open
With > Java Editor.
The location of the Java file in the Package Explorer is project_name > src > package_name > class_name.java.For example: MyPluginProject > src > com.example > CobolRule.java.
- In the Java editor,
add Java code to each of the
generated
visit()methods to do the code analysis.Avisit()method is generated for each nonabstract subinterface of the Cobol Application Model interface corresponding to the COBOL language element that you selected.For example, suppose that you selected the ACCEPT element in the Program tree on the third page of the creation wizard:- The CAM interface corresponding to ACCEPT is the
AcceptStmtinterface. - The Javadoc information
for the
AcceptStmtinterface shows, under the heading All Known Subinterfaces, thatAcceptStmthas two subinterfaces:AcceptDataTranferStmtandAcceptSystemInfoTransferStmt. - Two
visit()methods are generated, one for each of the two subinterfaces.
Note:- The
visit()methods belong to the interfaceICOBOLVisitor, in the packagecom.ibm.rsar.analysis.codereview.cobol.custom.model.util, in the Custom Rules API for COBOL Code Review. Do not implementICOBOLVistordirectly; instead, subclassAbstractCOBOLVisitor. The following examples show the generatedvisit()methods:boolean visit(com.ibm.etools.cobol.application.model.cobol.AcceptDataTransferStmt n)boolean visit(com.ibm.etools.cobol.application.model.cobol.AcceptSystemInfoTransferStmt n)
- The node that is passed as input to a
visit()method is a subinterface of the interfaceASTNodein the packagecom.ibm.etools.cobol.application.model.cobolin the COBOL Application Model (CAM) API.
When a COBOL source file is analyzed, the code analyzer starts avisit()method whenever it encounters an instance of the correspondingASTNode. - The CAM interface corresponding to ACCEPT is the
- In each
visit()method, add Java code for the following functions:- Use the
ASTNode nthat is passed as input to thevisit()method to get information about the instance of the COBOL language element that you are analyzing. For example, to get the Program ID attribute of the Identification division, wherenis anIdentificationDivisionobject, you can write the following code:String myProgramID = n.getProgramId(); - Perform the code analysis for your custom rule. If you have more
than one
visit()method for your rule, you probably also must write Java code to coordinate the results from the individualvisit()methods. - Set the return code and the return information. Return
trueto continue visiting child nodes of the current node orfalseto skip visiting child nodes. If the COBOL language element that is being analyzed violates the rule, add the corresponding node to the tokens list.
- Use the
- When you are finished, close the Java editor.