FuzzyJava is a Java code fuzzer. It's designed to allow a single fuzzed code snippet to generate many similar code snippets, with different variable names, structure, or behavior.
FuzzyJava is a prototype. Many things don't work properly yet. It's based on a modified ANTLR4 grammar. It can parse almost all of Java 8 properly, but doesn't currently generate nice output in all cases. Fuzzing doesn't work properly either in many cases outside of the ones outlined below.
FuzzyJava supports fuzzy types, at present just
?primitive
, which expands to a random primitive type,
and ?numeric
, which expands to a random numeric
primitive type.
Press Control-S in the edit window to compile Or use the button below
Backreference types allow you to create multiple randomly-typed variables with the same type.
Press Control-S in the edit window to compile Or use the button below
FuzzyJava can also fuzz variable names. Fuzzed variables can be reused through the block. Backreference types also work properly with fuzzed names.
Press Control-S in the edit window to compile Or use the button below
FuzzyJava can fuzz literals. A single ?
will output a random literal that inherits the type of the variable
it is being initialized. A ?short
will output a random
literal of type short
. Reassignment doesn't work
yet—but shouldn't be hard. (Famous last words.)
Press Control-S in the edit window to compile Or use the button below