首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ktlint的实时规则

使用ktlint的实时规则
EN

Stack Overflow用户
提问于 2019-12-18 16:05:51
回答 2查看 1.4K关注 0票数 2

我正在尝试在我的android项目中使用ktlint。

目前我正在使用这些gradle插件:

代码语言:javascript
复制
org.jlleitschuh.gradle.ktlint
org.jlleitschuh.gradle.ktlint-idea

我可以使用手动gradle任务检查代码,其中警告将由终端显示。

有没有可能在javascript中实现像eslint这样的东西?示例:

EN

回答 2

Stack Overflow用户

发布于 2020-05-01 13:04:00

也许下面的建议不能直接解决你的需求。但是,如何让自动格式化过程成为构建过程的一部分呢?我的意思是,你的代码将被自动格式化,然后根据ktlint rules进行检查,你只需要担心在提交代码之前运行构建命令(即./gradlew clean build)。这就是我是如何做到的:

首先,我使用的是Gradle6.3,并且我已经实现了9.1.2版本的org.jlleitschuh.gradle.ktlint插件。

一旦插件导入到项目中,就会添加一些任务,如plugin's documentation所述:

此插件向每个源集添加两个主任务:ktlintsource set nameSourceSetCheckktlintsource set nameSourceSetFormat

通常添加的任务包括:

  • src/kotlin/main源集的ktlintMainSourceSetCheckktlintMainSourceSetFormat
  • src/kotlin/test源集的ktlintestsourcesetcheckktlintestsourcesetformat

为了使ktlintMainSourceSetFormatktlintTestSourceSetFormat成为构建过程的一部分,您应该在subprojects { }部分中添加以下gradle操作:

对于基于kotlin的gradle脚本(build.gradle.kts):

代码语言:javascript
复制
afterEvaluate {
    tasks["ktlintMainSourceSetCheck"].dependsOn(tasks["ktlintMainSourceSetFormat"])
    tasks["ktlintTestSourceSetCheck"].dependsOn(tasks["ktlintTestSourceSetFormat"])
}

对于基于groovy的gradle脚本(build.gradle):

代码语言:javascript
复制
afterEvaluate {
    tasks.getByName('ktlintMainSourceSetCheck').dependsOn(tasks.getByName('ktlintMainSourceSetFormat'))
    tasks.getByName('ktlintTestSourceSetCheck').dependsOn(tasks.getByName('ktlintTestSourceSetFormat'))
}

这使得上面提到的“格式”任务在“检查”任务之前运行,在当前子项目的构建过程成功之后。无论何时运行构建,这些“检查”任务都会在控制台中显示格式化错误,但将它们设置为“格式化”任务的子级将强制构建过程在检查代码之前对其进行格式化,这样就不会在控制台中显示格式化错误。

此外,还可以通过在allprojects { }节中添加以下代码,将代码检查和格式应用于生成脚本文件(build.gradle(.kts)):

代码语言:javascript
复制
afterEvaluate {
    tasks["ktlintKotlinScriptCheck"].dependsOn(tasks["ktlintKotlinScriptFormat"])
}

支持Git的

如果您想在预提交阶段添加自动格式化功能,可以使用以下任务:here中解释的addKtlintCheckGitPreCommitHookaddKtlintFormatGitPreCommitHook

IntelliJ IDEA支持的

如果要将ktlint rules应用于当前项目,只需在导入org.jlleitschuh.gradle.ktlint-idea插件后执行以下gradle命令:./gradlew ktlintApplyToIdea,这将替换.idea/文件夹中的codeStyles文件,如here所述

最后,here是一个应用了上述所有内容的build.gradle.kts示例。

票数 2
EN

Stack Overflow用户

发布于 2021-09-22 07:54:47

尝试安装plugin Ktlint ​(unofficial)​并按照安装说明进行操作。

转到Preferences > Tools > ktlint并确保选中了Enabled ktlint复选框。

如果是android项目,也要选中Android mode复选框。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59387783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档