fenix/mozilla-detekt-rules/src/main/java/org/mozilla/fenix/detektrules/perf/MozillaRunBlockingCheck.kt

34 lines
1.3 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.detektrules.perf
import io.gitlab.arturbosch.detekt.api.*
import org.jetbrains.kotlin.psi.*
private const val VIOLATION_MSG = "Please use `org.mozilla.fenix.perf.runBlockingImplement` instead" +
"because it allows us to monitor the code for performance regressions."
/**
* A check to prevent us from working around mechanisms we implemented in
* @see org.mozilla.fenix.perf.RunBlockingCounter.runBlockingIncrement to count how many runBlocking
* are used.
*/
class MozillaRunBlockingCheck(config: Config) : Rule(config) {
override val issue = Issue(
"MozillaRunBlockingCheck",
Severity.Performance,
"Prevents us from working around mechanisms we implemented to count how many " +
"runBlocking are used",
Debt.TWENTY_MINS
)
override fun visitImportDirective(importDirective: KtImportDirective) {
if (importDirective.importPath?.toString() == "kotlinx.coroutines.runBlocking") {
report(CodeSmell(issue, Entity.from(importDirective), VIOLATION_MSG))
}
}
}