我创建了一个detector类,目的是获取调用方法并对其执行一些操作。但是 visitMethodCall
不是为我在测试用例中添加的链式方法调用的。
这就是测试用例的样子
@Test
fun `when tags work name is not referenced from RxWorkerTags enum an error is given`() {
lint()
.allowMissingSdk()
.files(kotlin("""
package a.b.c.jobScheduler
import androidx.work.ExistingWorkPolicy
import androidx.work.WorkManager
import android.content.Context
class InboxSyncJob(private val context: Context) {
fun start(interval: Long) {
WorkManager
.getInstance(context)
.beginUniqueWork(
"SyncJobService",
ExistingWorkPolicy.REPLACE,
getWork(interval)
)
.enqueue()
}
}
""".trimIndent()))
.issues(ISSUE_REFERENCE_RxWORKER_TAGS)
.run()
.expectErrorCount(1)
}
探测器等级
class ReferenceRxWorkerTagsDetector : Detector(), SourceCodeScanner {
companion object {
internal const val PRIORITY = 10
private const val METHOD_BEGIN_UNIQUE_WORK = "beginUniqueWork"
private const val METHOD_ADD_TAG = "addTag"
}
override fun getApplicableMethodNames(): List<String> = listOf(METHOD_BEGIN_UNIQUE_WORK)
override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
if (node.methodName == METHOD_BEGIN_UNIQUE_WORK) {
// Do something
}
}
}
理想的, visitMethodCall
应该被要求 beginUniqueWork
,但它没有按预期工作。有人能帮忙吗。
暂无答案!
目前还没有任何答案,快来回答吧!