如何在IntelliJ IDEA中为Kotlin配置提交前自动格式化代码钩子?
配置Kotlin代码自动格式化Pre-Commit Hook
方案1:用Gradle Spotless插件 + Git原生Hook
Spotless是支持多语言的代码格式化插件,内置ktfmt(Google开源Kotlin格式化工具),适合Gradle项目。
步骤1:配置Spotless插件
在项目根目录的build.gradle.kts中添加:
plugins { id("com.diffplug.spotless") version "6.25.0" } spotless { kotlin { ktfmt() // 使用Google的ktfmt规则 // 若需自定义规则,可添加ktfmt().config(mapOf("indent_style" to "space", "indent_size" to "4")) } }
执行./gradlew spotlessApply测试,确认代码能被正确格式化。
步骤2:编写Pre-Commit Hook脚本
- 进入项目的
.git/hooks目录,复制pre-commit.sample文件并重命名为pre-commit(删除.sample后缀)。 - 打开
pre-commit文件,替换原有内容为:
#!/bin/sh # 执行Spotless格式化命令 ./gradlew spotlessApply # 将格式化后的代码重新暂存到Git git add . exit 0
- 给脚本添加执行权限:
chmod +x .git/hooks/pre-commit
方案2:用pre-commit框架 + ktfmt钩子
pre-commit是跨语言的Hook管理工具,方便团队统一维护Hook配置。
步骤1:安装pre-commit
通过pip安装(需先安装Python环境):
pip install pre-commit
步骤2:配置Hook规则
在项目根目录创建.pre-commit-config.yaml文件,内容如下:
repos: - repo: ktfmt官方pre-commit钩子仓库 rev: v0.46 # 替换为最新版本号 hooks: - id: ktfmt
步骤3:安装Hook到Git
执行命令完成Hook安装:
pre-commit install
步骤4:验证效果
执行pre-commit run --all-files测试全量代码格式化,后续每次执行git commit时,工具会自动格式化暂存的Kotlin文件。
同步IntelliJ IDEA格式化规则
为了避免本地手动格式化和Hook格式化规则不一致,可在IntelliJ中安装ktfmt插件:
- 打开
Settings > Plugins,搜索ktfmt并安装。 - 进入
Settings > Tools > ktfmt,勾选Enable ktfmt,确保和Hook使用相同的规则版本。
内容的提问来源于stack exchange,提问作者Makruzz
相关产品推荐
相关产品推荐

