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

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



但是下面是一个简单的示例here,但我不知道将这些文件放置在哪里或ktlint建议的“jar”放置在哪里,或者说找不到我的自定义报告器。

有没有人举这个例子?谢谢。

最佳答案

看一看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"
    }
    
  • 07-24 13:17