FuzzyJava

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.

Fuzzy Types

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

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

Fuzzy Variable Names

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

Fuzzy Literals

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
Fork me on GitHub