Klocwork provides the most comprehensive set of capabilities for enabling developers to customize Klocwork's analysis for C, C++ and Java to meet their unique organizational, regulatory or code base requirements.
The foundation for this capability is a high-level declarative language that allows developers to easily extend Klocwork's extensive built-in library by adding their own checkers using one of two types of language frameworks:
Checker development can be done through the Checker Studio product module which provides developers with the following feature set:
The foundation for this capability is a high-level declarative language that allows developers to easily extend Klocwork's extensive built-in library by adding their own checkers using one of two types of language frameworks:
- Abstract Syntax Tree (AST) checkers are used when the checker doesn't require runtime state to evaluate an error condition and can be found entirely within the source tree
- Example AST checker: Classes must not place calls to virtual member functions within constructors or destructors
- Data flow checkers require knowledge of the code's runtime state and complex data flow across function call boundaries in order to create effective analysis
- Example data flow checker: The collection returned by the Arrays.asList() method is immutable and must not be modified - any attempt to modify it will throw a runtime exception.
Checker development can be done through the Checker Studio product module which provides developers with the following feature set:
- Design support through comprehensive documentation of the available APIs, sample checkers, and tutorials for creating new checkers
- Development support through the availability of a checker development tool chain to navigate the Klocwork-generated AST, allowing developers to more easily implement checkers
- Deployment support through a simplified, "one button" checker deployment that introduces an automated "push model" for deploying custom checkers to the developer's desktop.


