Kaveri provides a tool for performing static slicing of Java programs. Using Kaveri, the user can select a program point p and find all the program points that may depend on or influence the program behavior at p. The tool supports various data-flow or control-flow based influences/dependences at varying level of accuracy. Kaveri can handle both sequential and concurrent programs.
Building on the calculated information, Kaveri provides a rich set of views (Dependence tracking, Dependence history, Jimple View) that enable the user to explore various dependences in programs. It supports both simple select-click-view usage as well as expert configure-select-click-view usage. Features such as scoping and context-restriction allow the user to inject application-context information to improve scalability and accuracy.
Kaveri provides a scripting based query framework (based on GroovyMonkey plugin) that allows users to easily write scripts to customize the display of analysis information and to perform light-weight analysis building on existing analysis information.
Under the hood, Kaveri is powered by the program analysis and slicing framework catered by the Indus toolkit. Object-flow analysis, escape analysis, various dependence analyses, side-effect analysis, atomicity analysis, monitor analysis,and safe lock analysis are available in the Indus toolkit and are accessible via the scripting support in Kaveri.
Kaveri is availabe in both source and binary form under a free-for-non-commercial-use license from Santos Laboraties, Kansas State University (http://www.cis.ksu.edu/santos). For commercial purposes, please contact either Santos Laboratories or Venkatesh Prasad Ranganath (firstname.lastname@example.org).