mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
Simplify conditional checks to improve coverage (#4221)
This commit is contained in:
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypesAndPredicate
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
/**
|
||||
@@ -99,7 +99,5 @@ class NoNameShadowing(config: Config = Config.empty) : Rule(config) {
|
||||
}
|
||||
|
||||
private fun KtLambdaExpression.hasParentImplicitParameterLambda(): Boolean =
|
||||
getParentOfTypesAndPredicate(true, KtLambdaExpression::class.java) {
|
||||
it.implicitParameter(bindingContext) != null
|
||||
} != null
|
||||
getStrictParentOfType<KtLambdaExpression>()?.implicitParameter(bindingContext) != null
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
|
||||
@@ -39,13 +38,11 @@ class UnnecessaryTemporaryInstantiation(config: Config = Config.empty) : Rule(co
|
||||
|
||||
override fun visitCallExpression(expression: KtCallExpression) {
|
||||
if (isPrimitiveWrapperType(expression.calleeExpression) &&
|
||||
isToStringMethod(expression.nextSibling?.nextSibling)
|
||||
expression.nextSibling?.nextSibling?.text == "toString()"
|
||||
) {
|
||||
report(CodeSmell(issue, Entity.from(expression), issue.description))
|
||||
}
|
||||
}
|
||||
|
||||
private fun isPrimitiveWrapperType(expression: KtExpression?) = types.contains(expression?.text)
|
||||
|
||||
private fun isToStringMethod(element: PsiElement?) = element?.text == "toString()"
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.KtContainerNodeForControlStructureBody
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
@@ -55,13 +54,8 @@ class CollapsibleIfStatements(config: Config = Config.empty) : Rule(config) {
|
||||
private fun isNotElseIfOrElse(expression: KtIfExpression) =
|
||||
expression.`else` == null && expression.parent !is KtContainerNodeForControlStructureBody
|
||||
|
||||
private fun hasOneKtIfExpression(expression: KtIfExpression): Boolean {
|
||||
val statement = expression.then?.getChildrenOfType<KtExpression>()?.singleOrNull()
|
||||
return statement != null && isLoneIfExpression(statement)
|
||||
}
|
||||
private fun hasOneKtIfExpression(expression: KtIfExpression) =
|
||||
expression.then?.getChildrenOfType<KtExpression>()?.singleOrNull().isLoneIfExpression()
|
||||
|
||||
private fun isLoneIfExpression(statement: PsiElement): Boolean {
|
||||
val ifExpression = statement as? KtIfExpression
|
||||
return ifExpression != null && ifExpression.`else` == null
|
||||
}
|
||||
private fun KtExpression?.isLoneIfExpression() = this is KtIfExpression && `else` == null
|
||||
}
|
||||
|
||||
@@ -161,8 +161,8 @@ class MagicNumber(config: Config = Config.empty) : Rule(config) {
|
||||
else -> false
|
||||
}
|
||||
|
||||
private fun parseAsDoubleOrNull(rawToken: String?): Double? = try {
|
||||
rawToken?.let { parseAsDouble(it) }
|
||||
private fun parseAsDoubleOrNull(rawToken: String): Double? = try {
|
||||
parseAsDouble(rawToken)
|
||||
} catch (e: NumberFormatException) {
|
||||
null
|
||||
}
|
||||
@@ -170,10 +170,8 @@ class MagicNumber(config: Config = Config.empty) : Rule(config) {
|
||||
private fun parseAsDouble(rawNumber: String): Double {
|
||||
val normalizedText = normalizeForParsingAsDouble(rawNumber)
|
||||
return when {
|
||||
normalizedText.startsWith("0x") || normalizedText.startsWith("0X") ->
|
||||
normalizedText.substring(2).toLong(HEX_RADIX).toDouble()
|
||||
normalizedText.startsWith("0b") || normalizedText.startsWith("0B") ->
|
||||
normalizedText.substring(2).toLong(BINARY_RADIX).toDouble()
|
||||
normalizedText.startsWith("0x") -> normalizedText.substring(2).toLong(HEX_RADIX).toDouble()
|
||||
normalizedText.startsWith("0b") -> normalizedText.substring(2).toLong(BINARY_RADIX).toDouble()
|
||||
else -> normalizedText.toDouble()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user