Reports non-final fields that are accessed in both synchronized and non-synchronized contexts. volatile fields as well as accesses in constructors and initializers are ignored by this inspection.

Such "partially synchronized" access is often the result of a coding oversight and may lead to unexpectedly inconsistent data structures.

Example:


  public class Program {
    Console console; // warning: Field 'console' is accessed in both synchronized and unsynchronized contexts

    public synchronized void execute() {
      console.print("running");
    }

    public void check() {
      console.check();
    }
  }

Use the option to specify if simple getters and setters are counted as accesses too.