Introduction BANE is a toolkit for constructing program analyses such as dataflow and type inference systems. Program analyses are widely used in compilers and software engineering tools for discovering or verifying specific properties of software systems, such as type safety and opportunities for program optimization. BANE is constraint-based , meaning that analyses are formulated as systems of constraints generated from the program text.
Constraints are a natural conceptual and engineering framework for program analysis.
From the viewpoint of the analysis designer, the problem of implementing an analysis is reduced to the problem of writing code to generate appropriate constraints, which is often done with a simple recursive walk of the abstract syntax tree. The analysis engine takes care of all details of constraint representation and resolution. From an engineering perspective, there are many opportunities for optimizing the representation and resolution of constraints that can be encapsulated inside the resolution engine. In addition to work on the engine itself, we are devoting substantial energy to writing applications to illustrate and test the potential of constraint-based program analysis. Work on BANE is currently supported by grants from NSF and Rockwell, and an equipment donation from Intel.