3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SonarQubeのバージョンアップでjava:S5810のBug Issueが検知されるようになった経緯を調べたメモ

3
Last updated at Posted at 2026-07-31

起きたこと

SonarQubeのバージョンアップを実施した後、
JUnitのライフサイクルメソッドでスコープがprivateになっているものに
java:S5810 のBugが検出されるようになりました。

しかし動作確認をしてみると、privateのライフサイクルメソッドは動作しているようでした。
不思議に思い少し調べてみたメモです。

環境

  • SonarQube Server
    2025.1 LTA -> 2026.1 LTA
  • JUnit Version
    JUnit Jupiter 6.0.2

JUnit Jupiterのバージョンアップで起こっていたこと

5.9.0 での破壊的な変更

JUnit Jupiter 5.9.0 で行われた破壊的な変更

Private lifecycle methods (annotated with @BeforeAll, @AfterAll, @BeforeEach, or @AfterEach) now correctly lead to an exception. Although this is a bug fix, it is technically also a breaking change since there might be existing user code with private lifecycle methods which will now start to fail.

プライベートなライフサイクルメソッドは正しく例外を発生させるようになりました。これはバグ修正ではありますが、既存のライフサイクル メソッドを含むユーザー コードが動作しなくなる可能性があるため、技術的には破壊的変更でもあります。

5.9.2でのリバート

JUnit Jupiter 5.9.2で行われた前述の破壊的な変更のリバート

Lifecycle methods are allowed to be declared as private again for backwards compatibility; however, using private visibility for lifecycle methods is strongly discouraged and will be disallowed in a future release.

ライフサイクルメソッドは、後方互換性のために再度private宣言することが許可されています。ライフサイクルメソッドにprivate可視性を使用することは強く推奨されず、将来のリリースでは禁止される予定です。

起きていたこと

5.9.0でprivateスコープのライフサイクルメソッドが例外を発生させるようになる修正が行われた。
しかし5.9.2でその修正はリバートされた。(クレームがあったのでしょうか…?)
そのため5.9.3以降では5.9.0より前と同様にprivateスコープのライフサイクルメソッドは動作する状態だった。

しかし5.9.3のRelease Notesには

ライフサイクルメソッドにprivate可視性を使用することは強く推奨されず、将来のリリースでは禁止される予定です。

と記載されており、将来的に5.9.0と同様に動かなくなる可能性があるため、SonarQubeではBugとして検知されている。
という状態なのかなと思います。

そのため、我々のプロジェクトではこのIssueをチェックから外したり、Acceptedするのではなく、発見次第修正していく形で対応することにしました。

おわり。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?