Last night I started writing a class name matcher that uses Perforce-inspired patterns. Internally, those are converted to Java regexes. Using this matcher, it is a lot easier now to specify which classes in what packages should be excluded.
By now, I’ve found out that not the entire
sun.* package has to be excluded, but actually just
sun.reflect.* . I’m still working on
java.* . Right now it seems like
sun.lang.* have to be excluded. I haven’t exactly considered the ramifications of that yet.
But more about those patterns. First of all, the entire string has to match, so
$ for beginning and end are always implied. A
? matches a single character, a
* matches zero or more characters but not a period (
\*\*\* truly matches zero or more characters. That way,
* means just one package,
\*\*\* means any number of packages. If a pattern is prefixed with
!, then that match is negated. The matcher will indicate a match if there was at least one positive pattern that matched and no pattern that matched negatively.