Skip to content

Instantly share code, notes, and snippets.

@mike-neck
Last active October 28, 2020 11:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mike-neck/9f94506f7bc6b55e701c4b440152da86 to your computer and use it in GitHub Desktop.
Save mike-neck/9f94506f7bc6b55e701c4b440152da86 to your computer and use it in GitHub Desktop.
集まれKotlin好き!Kotlin愛好会 vol.25 @オンライン - https://love-kotlin.connpass.com/event/192472/

誰?

  • もちだ(mike-neck)
  • 株式会社クオカードで Kotlin と TypeScript と Terraform と YAML 書いてる
  • JJUG CCC 2020 Fall(2020/11/7) で jq の話する - https://jjug.doorkeeper.jp/events/112842
    • Java の話は一切しない

ktfmt と Spotless

フォーマッタ

  • ktlint などで採用されている Google による Kotlin Style Guide のフォーマットがわりとよく使われている印象(あくまで)
  • あまり好きでない←
    • インデント 4 個は多い、 2 個にしたい
  • フォーマッターを定めているのはレビューなどで(若干好みに分類される)スタイルの話に終止してしまうような不毛な時間を費やさないため
  • ktfmt - Facebook によるフォーマッター
    • google-java-format を内部的に利用したフォーマッター
      • つまりインデントが 2 個
    • こちらをメインに使っている

Gradle プラグイン

Spotless が ktfmt 以外に対応しているフォーマッター類

  • Kotlin
    • ktlint
    • ktfmt
    • Prettier
  • Java
    • google-java-format
    • eclipse jdt
    • ClangFormat
    • Prettier
  • Scala
    • scalafmt
  • Groovy
  • Python
  • C/C++
  • SQL
  • TypeScript

利用例

buildSrc/build.gradle
plugins {
    id 'groovy-gradle-plugin'
}

repositories {
    gradlePluginPortal()
}

dependencies {
    // https://plugins.gradle.org/plugin/com.diffplug.spotless の legacy からコピー
    implementation 'com.diffplug.spotless:spotless-plugin-gradle:5.7.0'
}
buildSrc/src/main/groovy/format-and-lint.gradle
plugins {
    id "com.diffplug.spotless"
}

spotless {
    kotlin {
        ktfmt()
    }
}
build.gradle or sub-project/build.gradle
plugins {
    id "org.springframework.boot" version "2.3.4.RELEASE"
    id "io.spring.dependency-management" version "1.0.10.RELEASE"
    id 'org.jetbrains.kotlin.jvm' version '1.4.10'
    id 'org.jetbrains.kotlin.plugin.spring' version "1.4.10"
    id 'format-and-lint'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment