首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gradle将KtLint样式添加到Android?

如何使用Gradle将KtLint样式添加到Android?
EN

Stack Overflow用户
提问于 2020-02-02 21:45:54
回答 1查看 4.7K关注 0票数 3

我想将ktlint使用的样式添加到Android中,这样当我自己应用格式化时,它就会使用ktlint样式。

根据文档,我安装了ktlint CLI。

代码语言:javascript
复制
brew install ktlint 

然后我导航到我的项目的根并执行

代码语言:javascript
复制
ktlint --android applyToIDEAProject

样式现在出现在我的首选项中供使用。

问题是,通过CLI应用的样式使用了我认为是最新版本的ktlint,因为我的手动格式化与格式化Gradle任务不同,我更希望它使用Gradle插件中的样式,因此应用于项目的样式与Gradle任务在格式化时使用的样式相同。

最后,我希望它是一个分级任务,以便其他开发人员可以导入和应用与我创建钩子相同的样式。

下面是我的“ktlint”级文件

代码语言:javascript
复制
dependencies {
    ktlint "com.pinterest:ktlint:0.34.2"
}


task ktlint(type: JavaExec, group: "verification") {
    description = "Check Kotlin code style."
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "src/**/*.kt"
}

check.dependsOn ktlint

task ktlintFormat(type: JavaExec, group: "formatting") {
    description = "Fix Kotlin code style deviations."
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "-F", "src/**/*.kt"
}

更新1

我查看了一个可用的Gradle插件,并看到了这个文件。在我看来,它看起来像是主库的包装器,所以它必须是不使用第三方插件的。https://github.com/JLLeitschuh/ktlint-gradle/blob/master/plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/KtlintApplyToIdeaTask.kt

我使用的版本是0.34.2,与最新版本相比,这些命令的支持似乎在后面添加了,如https://github.com/pinterest/ktlint/blob/master/ktlint/src/main/kotlin/com/pinterest/ktlint/Main.kt#L49所示

从这些信息,我增加了这个分级任务,它已经取得了进展,但仍然失败。

代码语言:javascript
复制
task addKtLintStyle(type: JavaExec, group: "formatting") {
    description = "yep"
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "--android", "applyToIDEA"
}

如果出现此错误,则失败

代码语言:javascript
复制
.idea directory not found. Are you sure you are inside project root directory? 

扔在这里

https://github.com/pinterest/ktlint/blob/master/ktlint/src/main/kotlin/com/pinterest/ktlint/internal/ApplyToIDEACommandHelper.kt#L27

我的gradle文件在我的项目的根上,所以我不知道下一步该做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-17 14:19:05

我设法让这个工作起来了。这是最后的任务定义。

代码语言:javascript
复制
task addKtLintStyle(type: JavaExec, group: "formatting") {
    description = "Adds The KtLint Style To Your IDE"
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "--android", "applyToIDEA", "-y"
    //Point to the root directory because this task needs access to the .idea directory
    workingDir(getRootDir())
}

注意这一行

代码语言:javascript
复制
    //Point to the root directory because this task needs access to the .idea directory
    workingDir(getRootDir())

而且还

代码语言:javascript
复制
    args "--android", "applyToIDEA", "-y"

-y只接受应用的样式。

重启Android之后,我能够看到ktlint风格

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

https://stackoverflow.com/questions/60030905

复制
相关文章

相似问题

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