Ktlint Custom Reporter

时间:2018-07-16 19:03:02

标签: android gradle kotlin checkstyle

我正在努力改善团队的代码风格,而ktlint似乎是我们引入的Kotlin的完美解决方案。

我的问题是找到一个完整的示例来创建客户报告程序,以在运行ktlint gradle任务时允许自定义输出。 Ktlint的文档说:

  

简而言之,您需要做的就是实现一个Reporter并通过使用META-INF / services / com.github.shyiko.ktlint.core.ReporterProvider注册一个自定义ReporterProvider使其可用。将所有内容打包到一个JAR中,您就完成了。

但遵循一个简单的示例here,但我不知道在哪里放置这些文件或ktlint推荐的“ jar”在哪里放置,或者说找不到我的自定义报告器。

有人能举个例子吗?谢谢。

1 个答案:

答案 0 :(得分:1)

看看mcassiano/ktlint-html-reporterone of the ktlint's built-in reporters

简而言之,每个报告者都包含一个Reporter,ReporterProvider和一个服务定义(其中包含ReporterProvider实现类名):

$ cat src/main/kotlin/your/pkg/CustomReporter.kt
package your.pkg
import com.github.shyiko.ktlint.core.Reporter
class CustomReporter : Reporter {
...    

$ cat src/main/kotlin/your/pkg/CustomReporterProvider.kt
package your.pkg
import com.github.shyiko.ktlint.core.ReporterProvider
class CustomReporterProvider : CustomReporter {
...

$ cat src/main/resources/META-INF/services/com.github.shyiko.ktlint.core.ReporterProvider
your.pkg.CustomReporterProvider

您需要将其打包到一个JAR中。
有了JAR后,ktlint可以通过以下方式之一加载它:

  • ktlint --reporter=custom,artifact=your.pkg:custom-reporter:0.1.0,output=target/output.html(假设your.pkg:custom-reporter:0.1.0在Maven Central / JCenter / JitPack中可用)
  • ktlint --reporter=custom,artifact=~/path/to/custom-reporter.jar(来自fs)
  • 来自类路径(如果您打算通过Gradle / Maven / etc等使用ktlint),例如

    dependencies {
        ktlint "com.github.shyiko:ktlint:$ktlintVersion"
        ktlint "your.pkg:custom-reporter:0.1.0"
    }
    
    task ktlint(type: JavaExec, group: "verification") {
        classpath = configurations.ktlint
        main = "com.github.shyiko.ktlint.Main"
        args "--reporter=custom", "src/**/*.kt"
    }