The basic steps involved in creating a KAST checker are:
1. Run kwcreatechecker to create the files for your checker:
kwcreatechecker --language cs --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.cs, 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 the build file for your checkers
- buildspec.out, which is a build specification file you can use in kwcheck or kwbuildproject to test your checker
2. Create a simple test case that contains the issue you want the checker to find, and place it in the testcase.cs 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
- On Windows: nmake install from the Visual Studio prompt
- The build process generates a checker deployment package with the following file:
- a zip file containing your checker files
6. Test the checker by installing the checker on your desktop and test it until you're sure of the results. Do one of the following:
- If you're using Visual Studio, extract the zip file into your <username>/.klocwork/plugins directory.
- If you're using Klocwork Desktop (kwgcheck command), or the kwcheck command, extract the zip file into your <username>/.klocwork/plugins/csharp 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.