ktlint的实时规则

时间:2019-12-18 08:05:51

标签: android kotlin lint

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

目前,我正在使用以下gradle插件:

org.jlleitschuh.gradle.ktlint
org.jlleitschuh.gradle.ktlint-idea

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

是否有可能在javascript中达到eslint之类的目的?例: enter image description here

2 个答案:

答案 0 :(得分:1)

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

首先,我正在使用Gradle 6.3,并且已经实现了org.jlleitschuh.gradle.ktlint插件的9.1.2版本。

将插件导入到项目后,将按照plugin's documentation的描述添加一些任务:

此插件为每个源集添加了两个主要任务: ktlint [源集名称] SourceSetCheck ktlint [源集名称] SourceSetFormat

通常添加的任务是:

    ktlintMainSourceSetCheck源集的
  • ktlintMainSourceSetFormatsrc/kotlin/main
  • ktlintTestSourceSetCheck源集的
  • ktlintTestSourceSetFormatsrc/kotlin/test

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

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

afterEvaluate {
    tasks["ktlintMainSourceSetCheck"].dependsOn(tasks["ktlintMainSourceSetFormat"])
    tasks["ktlintTestSourceSetCheck"].dependsOn(tasks["ktlintTestSourceSetFormat"])
}

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

afterEvaluate {
    tasks.getByName('ktlintMainSourceSetCheck').dependsOn(tasks.getByName('ktlintMainSourceSetFormat'))
    tasks.getByName('ktlintTestSourceSetCheck').dependsOn(tasks.getByName('ktlintTestSourceSetFormat'))
}

这使上面提到的“格式”任务在当前子项目的生成过程成功之后,在“检查”任务之前运行。这些“检查”任务是每当运行构建时在控制台中显示格式错误的任务,但是使它们成为“格式”任务的子级将迫使构建过程在检查代码之前对其进行格式化,从而不会显示任何格式错误。在控制台中。

此外,您还可以通过在build.gradle(.kts)部分中添加以下代码来应用代码检查和格式来构建脚本文件(allprojects { }):

afterEvaluate {
    tasks["ktlintKotlinScriptCheck"].dependsOn(tasks["ktlintKotlinScriptFormat"])
}

对于Git支持:

如果要在预提交阶段添加自动格式化功能,则可以使用以下任务:addKtlintCheckGitPreCommitHookaddKtlintFormatGitPreCommitHook,如here所述

对于IntelliJ IDEA支持:

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

所述

最后,here.idea/的示例,其中应用了上述所有内容。

答案 1 :(得分:0)

您不会像eslint那样收到错误消息,但是使用以下方法,您将不需要手动处理ktlint样式问题。它比手动修复问题好吗?

  1. 按照here的说明安装ktlint命令行工具。
  2. 按照here所述,设置IntelliJ IDEA的代码样式以与ktlint的代码样式保持一致。

因此,当您使用IntelliJ IDEA的提交窗口(CTRL + K或Command + K)进行提交,并且在启用提交之前具有重新格式化代码,那么您的提交将使用正确的代码样式进行。