报告在 synchronized 和非 synchronized 上下文中访问的非 final 字段。 volatile 字段以及构造函数和初始化器中的访问将被该检查忽略。

这种“部分同步”的访问通常是编码疏忽所致,可能导致意外的不一致数据结构。

示例:


  public class Program {
    Console console; // 警告: 在同步和非同步上下文中都访问字段 'console'

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

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

使用该选项指定简单的 getter 和 setter 是否也算作访问。