Reports assignment values that are not used after assignment. If the assignment value is unused, it's better to remove the assignment to shorten the code and avoid redundant allocations.

The following cases are reported:

Configure the inspection:

Use the Report redundant initializers option to report redundant initializers:


  int getI() {
    int i = 0; // redundant initialization
    i = 2;
    return i;
  }

Use the Report prefix expressions that can be replaced with binary expressions option to report cases where an ++i expression may be replaced with i + 1:


  int preInc(int value) {
    int res = value;
    return ++res;
  }

Use the Report postfix expressions where the changed value is not used option to report i++ cases where the value of i is not used later:


  int postInc(int value) {
    int res = value;
    return res++;
  }

Use the Report pattern variables whose values are never used option to report cases where the value of a pattern variable is overwritten before it is read:


  if (object instanceof String s) {
      s = "hello";
      System.out.println(s);
  }

Use the Report iteration parameters whose values are never used option to report cases where the value of an iteration parameter of an enhanced for statements is overwritten before it is read:


  for (String arg : args) {
      arg = "test";
      System.out.println(arg);
  }