如何使用 Fitten Code 自动生成 Kotlin 协程相关的并发处理代码
写过Kotlin协程的开发者,应该都体会过那种反复手写 launch、async、withContext、withTimeout 的枯燥感。尤其是碰到比较复杂的并发场景——比如同时发多个网络请求、给每个请求加上超时和重试、还要统一收集异常——代码一不小心就写得又长又绕。事实上,Fitten Code 插件提供了一个很实用的解法:直接生成这些常见模式的标准代码模板。从并行请求、超时重试,到结构化异常处理和作用域管理,它都能快速生成,前提是你在 suspend 函数中使用,并且 Kotlin SDK 版本在 1.9 及以上。

安装并启用 Fitten Code 插件
第一步自然是把插件装好。打开 IntelliJ IDEA,进入 Preferences(macOS)或 Settings(Windows/Linux),点进 Plugins,搜索 “Fitten Code”,点击 Install 就行。安装完成后别忘了重启编辑器。
重启后,在任意 Kotlin 文件里右键,如果能看见 “Fitten Code” 的子菜单,说明插件已经激活。如果没出现,先确认当前是否在 Kotlin 项目中运行,并且 Kotlin SDK 已经正确配置为 1.9 或更高版本——这是最容易被忽略的前提。
生成并行网络请求协程代码
并行请求生成有两种常用方式。
方法一:通过快捷指令
在 Kotlin 文件中新建一个空函数,输入
//f parallel http,然后按 Tab 键。插件会自动展开成一个包含 withContext(Dispatchers.IO) 和 async 的并行请求模板。模板里通常会带两个示例 API 调用,并通过 awaitAll() 收集所有结果。
方法二:通过右键菜单
把光标放到函数体内,右键选择 Fitten Code → Generate Coroutine Pattern → Parallel HTTP Calls,然后选择你需要的请求数量(2~5个),点击 Insert 就能插入。生成的代码默认会用
Deferred>
包装,确保不在主线程上直接 await,避免阻塞——这是一个很安全的做法。
值得注意的是
suspend 修饰符,否则编译会报错,而插件并不会主动校验这个前提。这是很多开发者反复失败的原因。
添加超时与重试逻辑
选中已经生成的 async 块外层作用域(比如 runBlocking 或 viewModelScope.launch 块),然后按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 “Fitten: Wrap with Timeout & Retry”,回车。插件会弹出一个设置面板,让你填写超时时间(timeoutMs)、最大重试次数(maxRetries)和重试间隔退避时间(backoff,单位毫秒)。
生成的代码会把原始协程体包裹在 withTimeout {} 内,并在外层套上一个 retryable {} 的扩展调用。这里需要留意一点:retryable 是插件自动注入的局部扩展函数,不依赖任何外部库,但它只对当前文件生效。如果想在其他地方复用,得手动把它提取到公共模块里。
生成结构化异常处理模板
把光标放在需要处理并发异常的位置——比如 awaitAll() 这行的末尾——然后按 Alt+Enter,在意图菜单里选择 “Fitten Code: Wrap with Exception Handler for Coroutines”。插件会插入一个 try/catch 块,分别捕获 CancellationException、TimeoutCancellationException 和 Throwable 三级异常,并为每一类提供带日志占位符的分支。
需要特别说明的是:CancellationException 的 catch 分支会被留空,因为协程取消本质上不是错误,不应该被当作异常来处理。如果手误删除了这个分支,协程的生命周期管理可能会出现意料之外的问题。