override fun beforeCheckRootProject()

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()
  }