Skip to content

Commit 311aa3c

Browse files
authored
Update Lint to API 30 (#454)
* Update lint dependency to 30.0.0 * Add Vendor information * Make AutoDisposeDetectorTest internal to make visibility happy This is a bug in the explicitApi() extension for applying it to tests * Bump to kotlin 1.4 targeting * Fix all the test issues + paper over some * Update lint API * Update rxjava jar
1 parent a4539c5 commit 311aa3c

File tree

10 files changed

+124
-131
lines changed

10 files changed

+124
-131
lines changed

gradle/dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def versions = [
2424
gjf: '1.7',
2525
nullawayPlugin: '1.1.0',
2626
kotlin: '1.5.21',
27-
lint: '27.2.2',
27+
lint: '30.0.0',
2828
ktlint: '0.42.1',
2929
spotless: '5.14.2'
3030
]

static-analysis/autodispose-lint/api/autodispose-lint.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public final class autodispose2/lint/AutoDisposeIssueRegistry : com/android/tool
1010
public fun <init> ()V
1111
public fun getApi ()I
1212
public fun getIssues ()Ljava/util/List;
13+
public fun getVendor ()Lcom/android/tools/lint/client/api/Vendor;
1314
}
1415

static-analysis/autodispose-lint/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ targetCompatibility = deps.build.javaVersion
2525

2626
compileKotlin {
2727
kotlinOptions {
28-
// Lint runs with 1.3 still, so we need to emit 1.3-compatible code
29-
apiVersion = "1.3"
30-
languageVersion = "1.3"
28+
// Lint runs with 1.4 still, so we need to emit 1.4-compatible code
29+
apiVersion = "1.4"
30+
languageVersion = "1.4"
3131
}
3232
}
3333

static-analysis/autodispose-lint/src/main/kotlin/autodispose2/lint/AutoDisposeDetector.kt

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ import com.android.tools.lint.detector.api.JavaContext
2626
import com.android.tools.lint.detector.api.Scope
2727
import com.android.tools.lint.detector.api.Severity
2828
import com.android.tools.lint.detector.api.SourceCodeScanner
29-
import com.google.common.collect.HashMultimap
30-
import com.google.common.collect.Multimap
3129
import com.intellij.psi.PsiMethod
3230
import com.intellij.psi.PsiType
3331
import com.intellij.psi.util.PsiUtil
@@ -95,7 +93,7 @@ public class AutoDisposeDetector : Detector(), SourceCodeScanner {
9593
private const val KOTLIN_EXTENSIONS = "autodispose2.KotlinExtensions"
9694

9795
// The default scopes for Android.
98-
private val DEFAULT_SCOPES = listOf(
96+
private val DEFAULT_SCOPES = setOf(
9997
"androidx.lifecycle.LifecycleOwner",
10098
"autodispose2.ScopeProvider",
10199
"android.app.Activity",
@@ -115,16 +113,16 @@ public class AutoDisposeDetector : Detector(), SourceCodeScanner {
115113
// The scopes that are applicable for the lint check.
116114
// This includes the DEFAULT_SCOPES as well as any custom scopes
117115
// defined by the consumer.
118-
private lateinit var appliedScopes: Set<String>
119-
private lateinit var ktExtensionMethodToPackageMap: Multimap<String, String>
120-
private lateinit var appliedMethodNames: List<String>
116+
private var appliedScopes: Set<String> = DEFAULT_SCOPES
117+
private var ktExtensionMethodToPackageMap: Map<String, Set<String>> = emptyMap()
118+
private var appliedMethodNames: List<String> = REACTIVE_SUBSCRIBE_METHOD_NAMES.toList()
121119

122120
private var lenient: Boolean = false
123121

124122
override fun beforeCheckRootProject(context: Context) {
125123
var overrideScopes = false
126124
val scopes = mutableSetOf<String>()
127-
val ktExtensionMethodToPackageMap = HashMultimap.create<String, String>()
125+
val ktExtensionMethodToPackageMap = mutableMapOf<String, MutableSet<String>>()
128126

129127
// Add the custom scopes defined in configuration.
130128
val props = Properties()
@@ -145,7 +143,7 @@ public class AutoDisposeDetector : Detector(), SourceCodeScanner {
145143
val arr = it.split("#", limit = 2)
146144
if (arr.size >= 2) {
147145
val (packageName, methodName) = arr
148-
ktExtensionMethodToPackageMap.put(methodName, packageName)
146+
ktExtensionMethodToPackageMap.getOrPut(methodName, ::mutableSetOf).add(packageName)
149147
}
150148
}
151149
}
@@ -162,7 +160,7 @@ public class AutoDisposeDetector : Detector(), SourceCodeScanner {
162160
}
163161
this.appliedScopes = scopes
164162
this.ktExtensionMethodToPackageMap = ktExtensionMethodToPackageMap
165-
this.appliedMethodNames = (REACTIVE_SUBSCRIBE_METHOD_NAMES + ktExtensionMethodToPackageMap.keySet()).toList()
163+
this.appliedMethodNames = (REACTIVE_SUBSCRIBE_METHOD_NAMES + ktExtensionMethodToPackageMap.keys).toList()
166164
}
167165

168166
override fun getApplicableMethodNames(): List<String> = appliedMethodNames
@@ -290,9 +288,9 @@ public class AutoDisposeDetector : Detector(), SourceCodeScanner {
290288
}
291289

292290
private fun isKotlinExtension(evaluator: JavaEvaluator, method: PsiMethod): Boolean {
293-
return ktExtensionMethodToPackageMap.get(method.name).any {
291+
return ktExtensionMethodToPackageMap[method.name]?.any {
294292
evaluator.isMemberInClass(method, it)
295-
}
293+
} ?: false
296294
}
297295

298296
/**

static-analysis/autodispose-lint/src/main/kotlin/autodispose2/lint/AutoDisposeIssueRegistry.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
package autodispose2.lint
1717

1818
import com.android.tools.lint.client.api.IssueRegistry
19+
import com.android.tools.lint.client.api.Vendor
1920
import com.android.tools.lint.detector.api.CURRENT_API
2021
import com.android.tools.lint.detector.api.Issue
2122
import com.google.auto.service.AutoService
2223

2324
@AutoService(IssueRegistry::class)
24-
public class AutoDisposeIssueRegistry() : IssueRegistry() {
25+
public class AutoDisposeIssueRegistry : IssueRegistry() {
2526
override val issues: List<Issue> = listOf(AutoDisposeDetector.ISSUE)
2627
override val api: Int = CURRENT_API
28+
29+
override val vendor: Vendor
30+
get() = Vendor("Uber", "AutoDispose", "https://github.com/uber/AutoDispose/issues")
2731
}

0 commit comments

Comments
 (0)