跳转至

Kotlin 构建与修复

该命令调用 kotlin-build-resolver 代理,以最小改动增量修复 Kotlin 构建错误。

该命令的工作方式

  1. 执行诊断:运行 ./gradlew build、detekt、ktlintCheck
  2. 解析错误:按文件分组,并按严重程度排序
  3. 增量修复:一次修复一个错误
  4. 验证每个修复:每次更改后重新运行构建
  5. 报告摘要:显示已修复项和剩余项

使用时机

使用 /kotlin-build 的情况: - ./gradlew build 因错误失败 - Kotlin 编译器报告错误 - ./gradlew detekt 报告违规 - Gradle 依赖解析失败 - 拉取了破坏构建的更改之后

执行的诊断命令

# プライマリビルドチェック
./gradlew build 2>&1

# 静的解析
./gradlew detekt 2>&1 || echo "detekt not configured"
./gradlew ktlintCheck 2>&1 || echo "ktlint not configured"

# 依存関係の問題
./gradlew dependencies --configuration runtimeClasspath 2>&1 | head -100

# キャッシュや依存関係メタデータが疑わしい場合のオプションの深いリフレッシュ
./gradlew build --refresh-dependencies

会话示例

User: /kotlin-build

Agent:
# Kotlinビルド解決

## 初期診断

```bash
$ ./gradlew build
e: src/main/kotlin/com/example/service/UserService.kt:25:15 Unresolved reference: UserRepository
e: src/main/kotlin/com/example/routes/UserRoutes.kt:42:9 Type mismatch: inferred type is String but Int was expected
e: src/main/kotlin/com/example/routes/UserRoutes.kt:58:5 'when' expression must be exhaustive
```

検出されたエラー: 3

## 修正 1: 未解決の参照

File: src/main/kotlin/com/example/service/UserService.kt:25
Error: Unresolved reference: UserRepository
Cause: importの欠落

```kotlin
// importを追加
import com.example.repository.UserRepository
```

```bash
$ ./gradlew build
# 残りエラー: 2
```

## 修正 2: 型の不一致

File: src/main/kotlin/com/example/routes/UserRoutes.kt:42
Error: Type mismatch: inferred type is String but Int was expected

```kotlin
// 変更前
val count = call.parameters["count"]
// 変更後
val count = call.parameters["count"]?.toIntOrNull()
    ?: return@get call.respond(HttpStatusCode.BadRequest, "Invalid count")
```

```bash
$ ./gradlew build
# 残りエラー: 1
```

## 修正 3: 非網羅的なWhen

File: src/main/kotlin/com/example/routes/UserRoutes.kt:58
Error: 'when' expression must be exhaustive

```kotlin
// 欠落ブランチを追加
when (user.role) {
    Role.ADMIN -> handleAdmin(user)
    Role.USER -> handleUser(user)
    Role.MODERATOR -> handleModerator(user) // 追加
}
```

```bash
$ ./gradlew build
# ビルド成功!
```

## 最終検証

```bash
$ ./gradlew detekt
# 問題なし

$ ./gradlew test
# 全テスト通過
```

## サマリー

| メトリクス | 件数 |
|-----------|------|
| 修正されたビルドエラー | 3 |
| 修正されたDetekt問題 | 0 |
| 変更されたファイル | 2 |
| 残りの問題 | 0 |

ビルドステータス: PASS: SUCCESS

通常修复的错误

错误 典型修复
Unresolved reference: X 添加 import 或依赖
Type mismatch 修正类型转换或赋值
'when' must be exhaustive 添加缺失的 sealed class 分支
Suspend function can only be called from coroutine 添加 suspend 修饰符
Smart cast impossible 使用局部 val 或 let
None of the following candidates is applicable 修正参数类型
Could not resolve dependency 修正版本或添加仓库

修复策略

  1. 先处理构建错误 — 代码必须能够编译
  2. 再处理 Detekt 违规 — 修复代码质量问题
  3. 最后处理 ktlint 警告 — 修复格式
  4. 一次修复一个 — 验证每次更改
  5. 最小改动 — 不重构,仅修复

停止条件

代理在以下情况下停止并报告: - 尝试 3 次后同一错误仍然存在 - 修复引入了更多错误 - 需要架构变更 - 缺少外部依赖

  • /kotlin-test — 构建成功后运行测试
  • /kotlin-review — 审查代码质量
  • verification-loop 技能 — 完整验证循环
  • 代理:agents/kotlin-build-resolver.md
  • 技能:skills/kotlin-patterns/

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC