Macker is a pattern-based architectural rule checker for Java projects.

Macker is an architectural rule checking utility for Java. It's meant to
model the architectural ideals programmers always dream up for their projects,
and then break. It is not a lint checker -- it operates on a more global,
more logical level, focusing on class dependencies rather than source code
formatting. Macker has no default set of rules; it's flexible, and writing
a rules file is part of the development process for each unique project.
You can tailor a rules file to suit a specific project's structure, or write
some general "good practice" rules for your code. Macker typically runs
as an Ant task, but can also be invoked with a shell script.

Version 0.4 adds many new features -- most notably filter-based patterns,
rule severity levels, a new XML reporting feature -- and several important
bug fixes.

Project documentation:

List of changes in 0.4: