Alternate names: unused, UnusedParameters

The problem

The presence of an unused variable may indicate a bug. This check highlights private fields, and parameters of private methods, which are unused and can be safely removed without considering the impact on other source files. “Private” in this context also includes effectively-private members, like public members of private classes.


False positives on fields and parameters can be suppressed by prefixing the variable name with unused, e.g.:

private static void authenticate(User user, Application unusedApplication) {

Fields which are used by reflection can be annotated with @Keep to suppress the warning.

This annotation can also be applied to annotations, to suppress the warning for any member annotated with that annotation:

import com.google.errorprone.annotations.Keep;

@interface Field {}


public class Data {
  @Field private int a; // no warning.

All false positives can be suppressed by annotating the variable with @SuppressWarnings("unused").