我正在努力改善团队的代码风格,而ktlint对于我们引入的Kotlin似乎是一个完美的解决方案。
我的问题是找到一个完整的示例来创建客户报告程序,以在运行ktlint gradle任务时允许自定义输出。 Ktlint的文档说:
但是下面是一个简单的示例here,但我不知道将这些文件放置在哪里或ktlint建议的“jar”放置在哪里,或者说找不到我的自定义报告器。
有没有人举这个例子?谢谢。
最佳答案
看一看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)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"
}