Skip to content

Conversation

@ptkNktq
Copy link
Owner

@ptkNktq ptkNktq commented Jan 18, 2026

Summary by CodeRabbit

リリースノート

  • Chores
    • Kotlinコンパイラ/プラグインやAndroid Gradle Plugin等のバージョンを更新
    • Gradleラッパーを更新(Gradle 9.xへ)
    • 依存ライブラリ(Compose BOM等)を更新
    • ビルド設定をKotlin DSLへ統一し、JVMターゲット指定を型安全な形式に移行
    • テストタスク設定を追加し、テスト未検出時の失敗を無効化

✏️ Tip: You can customize this high-level summary in your review settings.

@ptkNktq ptkNktq self-assigned this Jan 18, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 18, 2026

Walkthrough

Kotlin・AGP・Gradle Wrapperおよび関連ツールのバージョンが更新され、複数のモジュールのビルドスクリプトで kotlinOptions { jvmTarget = "17" }kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_17 } } に置換しています。UIモジュールにテストタスク設定が追加されました。

Changes

コホート / ファイル(s) 変更概要
バージョンカタログ/ツールチェーン
AndroidApp/.idea/kotlinc.xml, AndroidApp/gradle/libs.versions.toml, AndroidApp/gradle/wrapper/gradle-wrapper.properties
Kotlinプラグイン・コンパイラ・AGP・KSP・Compose BOM等のバージョン上げ(例: agp 8.9.3→8.13.2, kotlin 2.2.21→2.3.0), Gradle Wrapper 8.14.3→9.3.0, kotlinc.xmlのプラグイン版更新
ビルドスクリプト:JVMターゲット構文変更
AndroidApp/app/build.gradle.kts, AndroidApp/data/repository/build.gradle.kts, AndroidApp/domain/build.gradle.kts, AndroidApp/model/build.gradle.kts, AndroidApp/ui/build.gradle.kts
各モジュールの kotlinOptions { jvmTarget = "17" }kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_17 } } に置換(DSLの構造調整、文字列→enum指定)
UIモジュール:テスト設定追加
AndroidApp/ui/build.gradle.kts
tasks.withType<Test>().configureEach { failOnNoDiscoveredTests = false } を追加(テスト未発見時の失敗無効化)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 分

Possibly related PRs

  • Update/libs #292 — libs.versions.toml と Gradle/ツールバージョン更新を行っており、同様の依存関係変更パターンを共有
  • ライブラリ更新 #251.idea/kotlinc.xml、libs カタログ、gradle-wrapper の同一ファイル群を編集している
  • ライブラリの更新 #279 — バージョンカタログと Gradle Wrapper の更新を行っており関連性が高い

🐰 バージョン跳ねて、ビルドが踊るよ
文字列から型へ、JVMは十七のまま
Gradleは九へ、ツールは新調でぴょん
安心して走れ、ビルドパイプライン! 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed プルリクエストのタイトル「ライブラリ/環境の更新」は、Kotlin、gradle、ライブラリバージョンの更新など、変更セットの主要な内容を適切に要約しており、変更内容と関連性があります。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@AndroidApp/.idea/kotlinc.xml`:
- Line 4: The kotlinc.xml currently sets the Kotlin JPS plugin version via the
option name="version" value="2.2.21", which conflicts with the Kotlin version
declared in libs.versions.toml (kotlin = "2.3.0"); update the option value in
kotlinc.xml to match the libs.versions.toml Kotlin entry (set the option
name="version" to "2.3.0") so IDE and build system use the same Kotlin version.

In `@AndroidApp/gradle/wrapper/gradle-wrapper.properties`:
- Line 3: The Gradle version in gradle-wrapper.properties (distributionUrl) is
set to 9.3.0 which is not officially compatible with AGP 8.13.2; either
downgrade Gradle to 8.13 by updating distributionUrl to the Gradle 8.13
distribution (e.g., gradle-8.13-bin.zip) or upgrade the Android Gradle Plugin to
a 9.x release to match Gradle 9.x; locate the distributionUrl entry in
gradle-wrapper.properties and change it accordingly, or instead update the AGP
version in your build.gradle files (classpath
'com.android.tools.build:gradle:..') so both Gradle and AGP versions are
compatible.
🧹 Nitpick comments (1)
AndroidApp/model/build.gradle.kts (1)

10-14: LGTM! Kotlin 2.0の新しいcompilerOptions DSLへの移行は正しいです。

kotlinOptions { jvmTarget = "17" } から kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_17 } } への移行は、Kotlin Gradle Plugin 2.0+での推奨パターンです。

AIサマリーによると、他のモジュールでは異なる参照スタイルが使用されています(例:appではJvmTarget.JVM_17domainではJVM_17)。必須ではありませんが、プロジェクト全体で参照スタイルを統一すると可読性が向上します。

<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="2.0.21" />
<option name="version" value="2.2.21" />
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Kotlin バージョンの不整合があります。

kotlinc.xml では Kotlin JPS プラグインのバージョンが 2.2.21 に設定されていますが、libs.versions.toml では kotlin = "2.3.0" となっています。IDE とビルドシステム間でバージョンの不一致が発生する可能性があります。

🔧 提案される修正

libs.versions.toml のバージョンと一致させる場合:

-    <option name="version" value="2.2.21" />
+    <option name="version" value="2.3.0" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<option name="version" value="2.2.21" />
<option name="version" value="2.3.0" />
🤖 Prompt for AI Agents
In `@AndroidApp/.idea/kotlinc.xml` at line 4, The kotlinc.xml currently sets the
Kotlin JPS plugin version via the option name="version" value="2.2.21", which
conflicts with the Kotlin version declared in libs.versions.toml (kotlin =
"2.3.0"); update the option value in kotlinc.xml to match the libs.versions.toml
Kotlin entry (set the option name="version" to "2.3.0") so IDE and build system
use the same Kotlin version.

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Gradle 9.3.0 AGP 8.13.2 compatibility

💡 Result:

Short answer: Not officially — AGP 8.13.2 declares Gradle 8.13 as the required/default Gradle version, so the supported/expected combination is AGP 8.13.2 + Gradle 8.13. (developer.android.com)

Detail important for trying Gradle 9.3.0:

  • Gradle 9.x requires AGP >= 8.4 (so AGP 8.13.2 satisfies Gradle’s minimum supported-AGP check). (docs.gradle.org)
  • However, the AGP 8.13 release notes still list Gradle 8.13 as the minimum/default tested version; using Gradle 9.3 may work but is not the officially documented/tested combination and may expose incompatibilities in AGP or third‑party plugins. (developer.android.com)

Recommendation: stay on Gradle 8.13 with AGP 8.13.2 for guaranteed support. If you need Gradle 9.3, test thoroughly (CI + full clean builds) or upgrade AGP to a 9.x release that explicitly targets Gradle 9.0+. (developer.android.com)

Citations:


🌐 Web query:

Android Gradle Plugin 8.13.2 required Gradle version

💡 Result:

Android Gradle Plugin 8.13.2 requires Gradle 8.13. [1][2]

Sources:
[1] Android Developers — Android Gradle plugin release notes/compatibility.
[2] Gradle 8.13 release notes.


Gradle 9.3.0 は AGP 8.13.2 と互換性がありません。

AGP 8.13.2 の公式要件は Gradle 8.13 です。Gradle 9.3.0 は AGP >= 8.4 を要件としますが、AGP 8.13.2 は Gradle 9.3.0 との組み合わせについて公式にはテストされていません。以下のいずれかの対応が必要です:

  • Gradle を 8.13 にダウングレードする、または
  • AGP を 9.x 系にアップグレードする

現在の構成では、ビルド失敗やプラグイン非互換性が発生する可能性があります。

🤖 Prompt for AI Agents
In `@AndroidApp/gradle/wrapper/gradle-wrapper.properties` at line 3, The Gradle
version in gradle-wrapper.properties (distributionUrl) is set to 9.3.0 which is
not officially compatible with AGP 8.13.2; either downgrade Gradle to 8.13 by
updating distributionUrl to the Gradle 8.13 distribution (e.g.,
gradle-8.13-bin.zip) or upgrade the Android Gradle Plugin to a 9.x release to
match Gradle 9.x; locate the distributionUrl entry in gradle-wrapper.properties
and change it accordingly, or instead update the AGP version in your
build.gradle files (classpath 'com.android.tools.build:gradle:..') so both
Gradle and AGP versions are compatible.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@AndroidApp/ui/build.gradle.kts`:
- Around line 39-41: The current tasks.withType<Test>().configureEach block sets
failOnNoDiscoveredTests=false for all Test tasks; narrow this to only
Paparazzi-related test tasks (e.g. tasks whose names are recordPaparazzi or
verifyPaparazzi) so other test tasks still fail when no tests are discovered.
Update the tasks configuration to target only those Paparazzi tasks (referencing
the existing tasks.withType<Test>().configureEach and the task names
recordPaparazzi / verifyPaparazzi) and set failOnNoDiscoveredTests=false only
for that filtered set.

Comment on lines +39 to +41
tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
failOnNoDiscoveredTests = false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's examine the build.gradle.kts file
cat -n AndroidApp/ui/build.gradle.kts | head -60

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 1552


🏁 Script executed:

# Search for screenshot test references in the codebase
rg -i "screenshot" AndroidApp/ui/ --type kotlin --type gradle -B 2 -A 2

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 11719


🏁 Script executed:

# Look for Test task configuration and custom tasks
rg -i "tasks\.with|test" AndroidApp/ui/build.gradle.kts -B 2 -A 5

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 891


🏁 Script executed:

# Check if there are other test-related tasks or configurations
rg -i "unitTest|androidTest|paparazzi\|screenshot" AndroidApp/ui/ --type kotlin --type gradle | head -20

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 151


🏁 Script executed:

# Check for other test sources in the ui module
find AndroidApp/ui/src -type d -name "*test*" | head -20

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# List all test-related directories and files
ls -la AndroidApp/ui/src/

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 303


🏁 Script executed:

# Search for any unitTest or androidTest test classes
find AndroidApp/ui -path "*/src/*/kotlin/*Test*.kt" -o -path "*/src/*/java/*Test*.java" 2>/dev/null

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 166


🏁 Script executed:

# Check what other modules look like to see if this pattern is normal
find AndroidApp -name "build.gradle.kts" -exec grep -l "failOnNoDiscoveredTests" {} \;

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 109


🏁 Script executed:

# Check what test tasks paparazzi creates - look for gradle logs or inspect plugin behavior
# by searching for any references to paparazzi or screenshot task naming
rg -i "paparazzi\|screenshot.*test\|test.*screenshot" --type gradle --type kotlin -B 1 -A 1

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# Look for gradle files to understand the test task naming better
find AndroidApp -name "*.gradle.kts" | xargs grep -l "Test" | head -5

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 188


🏁 Script executed:

# Let's verify if there are androidTest or unitTest sources anywhere
find AndroidApp/ui -type d \( -name "androidTest" -o -name "unitTest" -o -name "test" \)

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# Check all test source sets in the ui module
find AndroidApp/ui/src -maxdepth 1 -type d

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 152


スクリーンショット関連タスクに限定して failOnNoDiscoveredTests=false を適用してください。

Test タスクに適用すると、スクリーンショット以外のテスト不検出も黙って通り、誤設定に気づけません。Paparazziタスク(recordPaparazziverifyPaparazzi など)に限定するのが安全です。

🛠️ 例: Paparazziタスクのみに限定
 tasks.withType<Test>().configureEach {
     // FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
-    failOnNoDiscoveredTests = false
+    if (name.contains("paparazzi", ignoreCase = true)) {
+        failOnNoDiscoveredTests = false
+    }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
failOnNoDiscoveredTests = false
tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
if (name.contains("paparazzi", ignoreCase = true)) {
failOnNoDiscoveredTests = false
}
}
🤖 Prompt for AI Agents
In `@AndroidApp/ui/build.gradle.kts` around lines 39 - 41, The current
tasks.withType<Test>().configureEach block sets failOnNoDiscoveredTests=false
for all Test tasks; narrow this to only Paparazzi-related test tasks (e.g. tasks
whose names are recordPaparazzi or verifyPaparazzi) so other test tasks still
fail when no tests are discovered. Update the tasks configuration to target only
those Paparazzi tasks (referencing the existing
tasks.withType<Test>().configureEach and the task names recordPaparazzi /
verifyPaparazzi) and set failOnNoDiscoveredTests=false only for that filtered
set.

@ptkNktq ptkNktq merged commit 97ac229 into develop Jan 18, 2026
2 checks passed
@ptkNktq ptkNktq deleted the update/env branch January 18, 2026 13:40
@ptkNktq ptkNktq restored the update/env branch January 18, 2026 14:00
@ptkNktq ptkNktq deleted the update/env branch January 18, 2026 14:01
@coderabbitai coderabbitai bot mentioned this pull request Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants