in static-analysis/autodispose-lint/src/main/kotlin/autodispose2/lint/AutoDisposeDetector.kt [134:176]
override fun beforeCheckRootProject(context: Context) {
var overrideScopes = false
val scopes = mutableSetOf<String>()
val ktExtensionMethodToPackageMap = mutableMapOf<String, MutableSet<String>>()
// Add the custom scopes defined in configuration.
val props = Properties()
context.project.propertyFiles
.find { it.name == PROPERTY_FILE }
?.apply {
val content = StringReader(context.client.readFile(this).toString())
props.load(content)
props.getProperty(CUSTOM_SCOPE_KEY)?.let { scopeProperty ->
val customScopes =
scopeProperty
.split(",")
.asSequence()
.map(String::trim)
.filter(String::isNotBlank)
.toList()
scopes.addAll(customScopes)
}
props.getProperty(KOTLIN_EXTENSION_FUNCTIONS)?.let { ktExtensionProperty ->
ktExtensionProperty.split(",").forEach {
val arr = it.split("#", limit = 2)
if (arr.size >= 2) {
val (packageName, methodName) = arr
ktExtensionMethodToPackageMap.getOrPut(methodName, ::mutableSetOf).add(packageName)
}
}
}
props.getProperty(LENIENT)?.toBoolean()?.let { lenient = it }
props.getProperty(OVERRIDE_SCOPES)?.toBoolean()?.let { overrideScopes = it }
}
// If scopes are not overridden, add the default ones.
if (!overrideScopes) {
scopes.addAll(DEFAULT_SCOPES)
}
this.appliedScopes = scopes
this.ktExtensionMethodToPackageMap = ktExtensionMethodToPackageMap
this.appliedMethodNames =
(REACTIVE_SUBSCRIBE_METHOD_NAMES + ktExtensionMethodToPackageMap.keys).toList()
}