报告方法上的 synchronized 修饰符。

对方法使用 synchronized 修饰符可能并非好主意,原因有几点:

  1. 在锁定的情况下应尽可能少地执行工作。 因此,通常最好使用 synchronized 块,只保留共享状态的代码。
  2. 同步成为方法接口的一部分。 这导致难以转换到不同的锁定机制。
  3. 跟踪锁定特定对象的内容变得更加困难。
  4. 在继承此方法的类时,无论是有意还是无意进行的 DoS (拒绝服务) 攻击都变得可行。

替代做法是考虑在 private final 锁对象上同步,对该对象的访问可以完全控制。

通过快速修复可以用 synchronized(this) 包装方法体。

示例:

  
    class Main {
      public synchronized void fooBar() {
      }
    }
  

在应用快速修复后:

  
    class Main {
      public void fooBar() {
        synchronized (this) {
        }
      }
    }
  

您可以为该检查配置以下选项:

  1. 包括原生方法 - 将原生方法纳入检查范围。
  2. 忽略重写 synchronized 方法的方法 - 不报告重写 synchronized 方法的方法。