mirror of
https://github.com/oxyroid/M3UAndroid.git
synced 2025-05-17 19:35:58 +08:00
lint: StaredImportsDetector.
This commit is contained in:
@ -1,13 +1,16 @@
|
||||
package com.m3u.lint.helper
|
||||
package com.m3u.lint
|
||||
|
||||
import com.android.tools.lint.client.api.IssueRegistry
|
||||
import com.android.tools.lint.client.api.Vendor
|
||||
import com.android.tools.lint.detector.api.Issue
|
||||
import com.m3u.lint.helper.UseHelperInsteadOfWindowInsetsDetector.Companion.UseHelperIssue
|
||||
import com.m3u.lint.detectors.HelperDetector
|
||||
import com.m3u.lint.detectors.StaredImportsDetector
|
||||
|
||||
class UseHelperInsteadOfWindowInsetsIssueRegistry : IssueRegistry() {
|
||||
override val issues: List<Issue>
|
||||
get() = listOf(UseHelperIssue)
|
||||
class M3UIssueRegistry : IssueRegistry() {
|
||||
override val issues: List<Issue> = listOf(
|
||||
HelperDetector.UseHelperIssue,
|
||||
StaredImportsDetector.StaredImportsIssue
|
||||
)
|
||||
override val vendor: Vendor = Vendor(
|
||||
vendorName = "M3UAndroid Project",
|
||||
feedbackUrl = "https://t.me/m3u_android_chat",
|
@ -1,4 +1,4 @@
|
||||
package com.m3u.lint.helper
|
||||
package com.m3u.lint.detectors
|
||||
|
||||
import com.android.tools.lint.detector.api.Category
|
||||
import com.android.tools.lint.detector.api.Detector
|
||||
@ -13,7 +13,7 @@ import com.intellij.psi.PsiMethod
|
||||
import org.jetbrains.uast.UCallExpression
|
||||
import org.jetbrains.uast.getContainingUMethod
|
||||
|
||||
class UseHelperInsteadOfWindowInsetsDetector : Detector(), SourceCodeScanner {
|
||||
class HelperDetector : Detector(), SourceCodeScanner {
|
||||
override fun getApplicableMethodNames(): List<String> = listOf("show", "hide")
|
||||
|
||||
override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
|
||||
@ -98,7 +98,7 @@ class UseHelperInsteadOfWindowInsetsDetector : Detector(), SourceCodeScanner {
|
||||
category = Category.CORRECTNESS,
|
||||
severity = Severity.FATAL,
|
||||
implementation = Implementation(
|
||||
UseHelperInsteadOfWindowInsetsDetector::class.java,
|
||||
HelperDetector::class.java,
|
||||
Scope.JAVA_FILE_SCOPE
|
||||
)
|
||||
)
|
@ -0,0 +1,45 @@
|
||||
package com.m3u.lint.detectors
|
||||
|
||||
import com.android.tools.lint.client.api.UElementHandler
|
||||
import com.android.tools.lint.detector.api.Category
|
||||
import com.android.tools.lint.detector.api.Detector
|
||||
import com.android.tools.lint.detector.api.Implementation
|
||||
import com.android.tools.lint.detector.api.Issue
|
||||
import com.android.tools.lint.detector.api.JavaContext
|
||||
import com.android.tools.lint.detector.api.Scope
|
||||
import com.android.tools.lint.detector.api.Severity
|
||||
import com.android.tools.lint.detector.api.SourceCodeScanner
|
||||
import org.jetbrains.uast.UImportStatement
|
||||
import java.util.EnumSet
|
||||
|
||||
class StaredImportsDetector : Detector(), SourceCodeScanner {
|
||||
override fun getApplicableUastTypes() = listOf(UImportStatement::class.java)
|
||||
|
||||
override fun createUastHandler(context: JavaContext) = object : UElementHandler() {
|
||||
override fun visitImportStatement(node: UImportStatement) {
|
||||
val reference = node.importReference ?: return
|
||||
if (node.isOnDemand) {
|
||||
context.report(
|
||||
issue = StaredImportsIssue,
|
||||
scope = reference,
|
||||
location = context.getLocation(reference),
|
||||
message = "Using special import instead of star-import."
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val StaredImportsIssue = Issue.create(
|
||||
id = "StaredImportsIssue",
|
||||
briefDescription = "using special imports instead",
|
||||
explanation = "using special imports instead of stared imports",
|
||||
category = Category.CORRECTNESS,
|
||||
severity = Severity.WARNING,
|
||||
implementation = Implementation(
|
||||
StaredImportsDetector::class.java,
|
||||
EnumSet.of(Scope.JAVA_FILE, Scope.TEST_SOURCES)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
@ -1 +1 @@
|
||||
com.m3u.lint.helper.UseHelperInsteadOfWindowInsetsIssueRegistry
|
||||
com.m3u.lint.M3UIssueRegistry
|
Reference in New Issue
Block a user