Creating C/C++ KAST checkers
When you have a code analysis issue that isn't detected by the Insight checkers, you can create a custom checker to find the problem in your code. This article explains the workflow in 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 you generated with the make into your <username>/.klocwork./<plugins>/<platform_name> directory.
7. Deploy the checker.
- When you're ready to deploy the checker in your server project, use kwdeploy for the deployment. See Deploying custom checkers.
- Watch a demo of Checker Studio here.
- Try writing a checker with Tutorial 1 - Creating a C/C++ KAST checker.
Documentation for custom C/C++ KAST checkers
- Creating C/C++ KAST checkers
- Tutorial 1 - Creating a C/C++ KAST checker
- Tutorial 2 - Creating a C/C++ KAST checker with built-in functions
- Tutorial 3 - Creating a C/C++ KAST checker with custom functions
- Creating and testing C/C++ KAST custom functions