Adding kotlinter

This commit is contained in:
Jays2Kings 2021-03-25 14:55:59 -04:00
parent 82660c4058
commit 7914b26488
4 changed files with 170 additions and 22 deletions

View File

@ -264,8 +264,32 @@ dependencies {
implementation("org.conscrypt:conscrypt-android:2.4.0")
}
tasks.preBuild {
dependsOn(tasks.ktlintFormat)
tasks {
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers)
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.freeCompilerArgs += listOf(
"-Xopt-in=kotlin.Experimental",
"-Xopt-in=kotlin.RequiresOptIn",
"-Xuse-experimental=kotlin.ExperimentalStdlibApi",
"-Xuse-experimental=kotlinx.coroutines.FlowPreview",
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-Xuse-experimental=kotlinx.coroutines.InternalCoroutinesApi",
"-Xuse-experimental=kotlinx.serialization.ExperimentalSerializationApi"
)
}
// Duplicating Hebrew string assets due to some locale code issues on different devices
val copyHebrewStrings = task("copyHebrewStrings", type = Copy::class) {
from("./src/main/res/values-he")
into("./src/main/res/values-iw")
include("**/*")
}
preBuild {
dependsOn(formatKotlin, copyHebrewStrings)
}
}
if (gradle.startParameter.taskRequests.toString().contains("Standard")) {

View File

@ -1,7 +1,5 @@
import Versions.ktlint
plugins {
id(Plugins.ktLint.name) version Plugins.ktLint.version
id(Plugins.kotlinter.name) version Plugins.kotlinter.version
id(Plugins.gradleVersions.name) version Plugins.gradleVersions.version
}
allprojects {
@ -15,22 +13,10 @@ allprojects {
}
subprojects {
apply(plugin = Plugins.ktLint.name)
ktlint {
debug.set(true)
verbose.set(true)
android.set(false)
outputToConsole.set(true)
ignoreFailures.set(true)
enableExperimentalRules.set(false)
reporters {
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.CHECKSTYLE)
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.JSON)
}
filter {
exclude("**/generated/**")
include("**/kotlin/**")
}
apply(plugin = Plugins.kotlinter.name)
kotlinter {
experimentalRules = true
}
}

View File

@ -91,6 +91,7 @@ object Versions {
const val viewStatePagerAdapter = "1.1.0"
const val viewToolTip = "1.2.2"
const val xlog = "1.6.1"
const val kotlinter = "3.4.0"
}
object LegacyPluginClassPath {
@ -124,6 +125,7 @@ object Plugins {
const val kotlinSerialization = "org.jetbrains.kotlin.plugin.serialization"
val gradleVersions = PluginClass("com.github.ben-manes.versions", Versions.gradleVersions)
val ktLint = PluginClass("org.jlleitschuh.gradle.ktlint", Versions.ktlint)
val kotlinter = PluginClass("org.jmailen.kotlinter", Versions.kotlinter)
}
data class PluginClass(val name: String, val version: String)
@ -144,7 +146,7 @@ object BuildPluginsVersion {
const val KOTLIN = "1.4.10"
const val ANDROID_EXTENSIONS = "org.jetbrains.kotlin:kotlin-android-extensions:$KOTLIN"
const val KOTLIN_GRADLE = "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN"
const val KOTLINTER = "org.jmailen.gradle:kotlinter-gradle:3.0.2"
const val KOTLINTER = "3.3.0"
const val GOOGLE_SERVICES = "com.google.gms:google-services:4.3.3"
const val OSS_LICENSE = "com.google.android.gms:oss-licenses-plugin:0.10.2"
const val VERSIONS_PLUGIN = "0.28.0"

136
ktlintCodeStyle.xml Normal file
View File

@ -0,0 +1,136 @@
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="kotlinx.android.synthetic" withSubpackages="true" static="false" />
</value>
</option>
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false" />
<option name="LINE_COMMENT_ADD_SPACE" value="true" />
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
</code_scheme>