If you are writing Java and you aren't using the
open source FindBugs
program, the prosecution lawyers will want to know why not. If you
can find a better lint checker for Java, use it; until then, it is
unprofessional to write Java without using this tool.

The flawfinder 1.27 release
copied from David Wheeler's
web site and converted to ZIP format. On Windows, you will need to
unpack it with unzip -a or equivalent. It's a Python program
so should work OK under Windows. The ZIP-file includes documentation.

metre.tar, a tar(1) archive that
unpacks into a metre.d directory, giving you a bunch of things
including call trees. Beware: this code needs serious work.
It doesn't handle // comments, and its method of creating a
call graph is ad hoc to the point of bogosity.

The experiment used a rather nice (but unimplemented) programming
language designed for readability experiments, called Chatterton.
The Chatterton reference manual
is about 35 pages and tells you everything you need to know.
The three dialects used in the experiment were
Chatterton-P (names_are_like_this), Chatterton-S (namesAreLikeThis),
and Chatterton-U (namesarelikethis).

There are three programs, Gen, Cracker, and k-means.
Each has a Chatterton-P version, a Chatterton-S version, and a
Chatterton-U version. Each student got one version
of each program, with no two students getting exactly the same
triple of versions. Each program version came with its own
questions; answers had to be written on the question sheets
and handed in at the office.