0
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?

Compose Compilerの誤検知による警告とその扱い方まとめ

Posted at

はじめに

最近、Composeを使った画面実装でBoxBoxWithConstraintsを利用している箇所に、次のような警告が表示されるケースがありました。

Calling a androidx.compose.ui.UiComposable composable function
where a UI Composable composable was expected

一見すると修正が必要そうに見える警告ですが、調べてみたところCompose Compiler側の既知の誤検知であることが分かりました。

そこでこの記事ではこの警告の正体と、現時点での対応方針をまとめておきたいと思います。

発生している警告について

対象となるのは、主に以下のようなケースです。

  • Box/BoxWithConstraintsを使ったレイアウト
  • 特定のCompose Compilerバージョンを利用している環境
  • 実装自体は正しく、実行時の挙動にも問題がない状態

にもかかわらず、IDE上で上記の警告が表示されます。

調査結果

今回の警告について調べたところ、Compose Compilerの既知の問題として報告済みであることが分かりました。
JetBrains YouTrackにも同様のIssueが登録されています。

Issueの内容を見る限り、

  • 実装ミスではない
  • 実行時の動作に影響はない
  • Compiler側の解析による誤検知

という扱いになっており、Compose側での修正待ちという認識で問題なさそうです。

現時点での対応方針

今回の警告は実行時の挙動に影響がないため、当面は警告を抑制する対応を取ることにしました。
具体的には、該当箇所に以下を付与しています。

@Suppress("COMPOSE_APPLIER_CALL_MISMATCH")
  • 意図しない警告を抑制できる
  • 実装自体を変更する必要はない
  • 修正が入った際に外せる対応

あくまで一時的な対応とし、Compose側で修正が入ったタイミングで外す予定です。

まとめ

今回の警告については、

  • Compose Compiler による既知の誤検知
  • 実行時の動作には影響なし
  • Issue 登録済みで修正待ちの状態

という整理になります。
警告自体は少し不安になりますが、現時点では過剰にコードを直す必要はなく、抑制対応で十分と判断しています。

さいごに

IDEやCompilerのアップデートに伴って、こうした「実害はないが気になる警告」に遭遇することは時々あります。
Issueの状況を確認しつつ、影響範囲を見極めて対応するのが大事だなと改めて感じました。

0
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
0
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?