Usually, programming languages are used according to conventions and rules. Although general rules
can be enforced by lint-like tools, there is a large class of rules that cannot be built into such
tools because they result from particular design decisions or the reuse of existing software. This
paper presents a system, called CoffeeStrainer, that statically checks programmer-specified
constraints on Java programs. Unlike previous approaches, which only support constraints that apply
to definitions of types, CoffeeStrainer additionally supports a second class of constraints
which apply to all uses of a type. Both classes of constraints play an important role for
object-oriented class libraries and frameworks, which often make assumptions on their correct use.
More information on CoffeeStrainer con be found in a recent paper:
Boris Bokowski, CoffeeStrainer -
Statically-Checked Constraints on the Definition and Use of Types in Java (©
Springer-Verlag, Proceedings of ESEC/FSE'99).
To download the current version, click here: CoffeeStrainer-1.1a.zip, or
CoffeeStrainer has been implemented by Boris Bokowski using Barat, a front-end for Java.
Contact me if you have any questions regarding