我正在尝试在我的android项目上使用ktlint。
目前,我正在使用以下gradle插件:
org.jlleitschuh.gradle.ktlint
org.jlleitschuh.gradle.ktlint-idea
我可以使用手动gradle任务来检查代码,其中警告将由终端显示。
答案 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
源集的ktlintMainSourceSetFormat
和src/kotlin/main
ktlintTestSourceSetCheck
源集的ktlintTestSourceSetFormat
和src/kotlin/test
为了使ktlintMainSourceSetFormat
和ktlintTestSourceSetFormat
成为构建过程的一部分,您应该在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支持:
如果要在预提交阶段添加自动格式化功能,则可以使用以下任务:addKtlintCheckGitPreCommitHook
和addKtlintFormatGitPreCommitHook
,如here所述
对于IntelliJ IDEA支持:
如果要将ktlint rules应用于当前项目,只需在导入org.jlleitschuh.gradle.ktlint-idea
插件后执行以下gradle命令:./gradlew ktlintApplyToIdea
,它将替换{{1 }} codeStyles
文件夹中的文件,如here
最后,here是.idea/
的示例,其中应用了上述所有内容。
答案 1 :(得分:0)