synchronized と非 synchronized の両方のコンテキストでアクセスされている非 final フィールドを報告します。 volatile フィールドとコンストラクターとイニシャライザーのアクセスは、このインスペクションにより無視されます。

このような「部分的な同期」アクセスは往々にしてコーディングの不備であり、一貫性のないデータ構造を予期せず生み出す可能性があります。

例:


  public class Program {
    Console console; // 警告: 'console' フィールドは同期および非同期コンテンツの両方でアクセスされています

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

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

単純な getter や setter もアクセスと見なすかどうかを指定するには、 オプションを使用します。