我正在努力改善团队的代码风格,而ktlint似乎是我们引入的Kotlin的完美解决方案。
我的问题是找到一个完整的示例来创建客户报告程序,以在运行ktlint gradle任务时允许自定义输出。 Ktlint的文档说:
简而言之,您需要做的就是实现一个Reporter并通过使用META-INF / services / com.github.shyiko.ktlint.core.ReporterProvider注册一个自定义ReporterProvider使其可用。将所有内容打包到一个JAR中,您就完成了。
但遵循一个简单的示例here,但我不知道在哪里放置这些文件或ktlint推荐的“ jar”在哪里放置,或者说找不到我的自定义报告器。
有人能举个例子吗?谢谢。
答案 0 :(得分:1)
看看mcassiano/ktlint-html-reporter或one 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"
}