Creating C/C++ KAST checkers
Creating C/C++ KAST checkers
When you have a code analysis issue that isn't detected by the Klocwork checkers, you can create a custom checker to find the problem in your code. This article explains the workflow for creating a custom checker.
Workflow: Creating a custom checker
The basic steps involved in creating a KAST checker are:
1. Run kwcreatechecker to create the files for your checker:
kwcreatechecker --language cxx --type kast --code <checker_name>
- where<checker_name> is the name you want to call your checker
- The command creates the stub files you need for creating your checker and places them in a <checker_name> directory. At this stage, the files contain template material, which you will replace with your own data as the process continues:
- testcase.cc, which will contain your testcase
- checkers.xml, which will contain your XPath-like KAST expression defining the checker
- help.xml, which will contain help for your checker
- Makefile, which is your C/C++ build file
2. Create a simple test case that contains the issue you want the checker to find, and place it in the testcase.cc file.
3. Use Checker Studio to:
- create the KAST expression that defines your checker
- test the expression
- add more complexity to your test case
- Checker Studio takes your test case as source code, presenting a visual representation of its hierarchical structure in an Abstract Syntax Tree (AST). As the studio builds the tree structure, the built-in compiler creates a 'node' for each item of source code. Connected through parent-child relationships, nodes can be the whole code sample, through a number of intermediate levels like statements or declarations, to simple constructs like an operator sign.
- Using the tree, you can identify nodes of interest and select qualifiers, conditions, variables, and iterative sequences to create the checker expression. The studio also provides a method of testing your expression, so that you finish up with a KAST expression that navigates through the tree and successfully pinpoints the defect in the source code.
4. Edit the template stub files.
- Place the KAST expression in the checkers.xml file by replacing the sample KAST expression in the <pattern> tag with yours. Create help documentation for your checker (at least a description), and place it in the help.xml file.
5. Build the checker.
- In this step, you generate the build specification for your test case and import it into your local project:
- On Unix:make install buildspec
- On Windows: nmake install buildspec from the Visual Studio prompt
- The build process generates a checker deployment package with the following files:
6. Test the checker.
- Install the checker on your desktop and test it until you're sure of the results. Do this by unzipping the checker deployment package into your <username>/.klocwork./plugins directory.
7. Deploy the checker.