我正在尝试在我的android项目中使用ktlint。
目前我正在使用这些gradle插件:
org.jlleitschuh.gradle.ktlint
org.jlleitschuh.gradle.ktlint-idea我可以使用手动gradle任务检查代码,其中警告将由终端显示。
有没有可能在javascript中实现像eslint这样的东西?示例:

发布于 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 nameSourceSetCheck和ktlintsource set nameSourceSetFormat
通常添加的任务包括:
src/kotlin/main源集的ktlintMainSourceSetCheck和ktlintMainSourceSetFormatsrc/kotlin/test源集的ktlintestsourcesetcheck和ktlintestsourcesetformat为了使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'))
}这使得上面提到的“格式”任务在“检查”任务之前运行,在当前子项目的构建过程成功之后。无论何时运行构建,这些“检查”任务都会在控制台中显示格式化错误,但将它们设置为“格式化”任务的子级将强制构建过程在检查代码之前对其进行格式化,这样就不会在控制台中显示格式化错误。
此外,还可以通过在allprojects { }节中添加以下代码,将代码检查和格式应用于生成脚本文件(build.gradle(.kts)):
afterEvaluate {
tasks["ktlintKotlinScriptCheck"].dependsOn(tasks["ktlintKotlinScriptFormat"])
}支持Git的:
如果您想在预提交阶段添加自动格式化功能,可以使用以下任务:here中解释的addKtlintCheckGitPreCommitHook和addKtlintFormatGitPreCommitHook
IntelliJ IDEA支持的:
如果要将ktlint rules应用于当前项目,只需在导入org.jlleitschuh.gradle.ktlint-idea插件后执行以下gradle命令:./gradlew ktlintApplyToIdea,这将替换.idea/文件夹中的codeStyles文件,如here所述
最后,here是一个应用了上述所有内容的build.gradle.kts示例。
发布于 2021-09-22 07:54:47
尝试安装plugin Ktlint (unofficial)并按照安装说明进行操作。
转到Preferences > Tools > ktlint并确保选中了Enabled ktlint复选框。
如果是android项目,也要选中Android mode复选框。
https://stackoverflow.com/questions/59387783
复制相似问题