Implemented AssertThatStringIsEmpty.
This commit is contained in:
+1
@@ -9,6 +9,7 @@ open class AbstractAssertJInspection : AbstractBaseJavaLocalInspectionTool() {
|
||||
companion object {
|
||||
const val ABSTRACT_ASSERT_CLASSNAME = "org.assertj.core.api.AbstractAssert"
|
||||
const val ABSTRACT_BOOLEAN_ASSERT_CLASSNAME = "org.assertj.core.api.AbstractBooleanAssert"
|
||||
const val ABSTRACT_STRING_ASSERT_CLASSNAME = "org.assertj.core.api.AbstractStringAssert"
|
||||
const val IS_EQUAL_TO = "isEqualTo"
|
||||
const val IS_NOT_EQUAL_TO = "isNotEqualTo"
|
||||
|
||||
|
||||
+5
-24
@@ -1,13 +1,11 @@
|
||||
package de.platon42.intellij.plugins.cajon.inspections
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.util.TypeConversionUtil
|
||||
import de.platon42.intellij.plugins.cajon.quickfixes.ReplaceSimpleMethodCallQuickFix
|
||||
import org.jetbrains.annotations.NonNls
|
||||
|
||||
class AssertThatBooleanIsTrueOrFalseInspection : AbstractAssertJInspection() {
|
||||
@@ -63,34 +61,17 @@ class AssertThatBooleanIsTrueOrFalseInspection : AbstractAssertJInspection() {
|
||||
}
|
||||
}
|
||||
val expectedResult = result as? Boolean ?: return
|
||||
val description =
|
||||
if (flippedBooleanTest) QUICKFIX_DESCRIPTION_NOT_IS_TRUE else QUICKFIX_DESCRIPTION_IS_TRUE
|
||||
val replacementMethod = if (expectedResult xor flippedBooleanTest) "isTrue()" else "isFalse()"
|
||||
holder.registerProblem(
|
||||
expression,
|
||||
INSPECTION_MESSAGE,
|
||||
ProblemHighlightType.INFORMATION,
|
||||
null as TextRange?,
|
||||
ReplaceWithIsNullQuickFix(
|
||||
expectedResult xor flippedBooleanTest,
|
||||
if (flippedBooleanTest) QUICKFIX_DESCRIPTION_NOT_IS_TRUE else QUICKFIX_DESCRIPTION_IS_TRUE
|
||||
)
|
||||
ReplaceSimpleMethodCallQuickFix(description, replacementMethod)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class ReplaceWithIsNullQuickFix(val expectedResult: Boolean, val quickfixName: String) : LocalQuickFix {
|
||||
override fun getFamilyName() = quickfixName
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val element = descriptor.startElement
|
||||
val factory = JavaPsiFacade.getElementFactory(element.project)
|
||||
val methodCallExpression = element as? PsiMethodCallExpression ?: return
|
||||
val oldQualifier = methodCallExpression.methodExpression.qualifierExpression ?: return
|
||||
val methodName = if (expectedResult) "isTrue()" else "isFalse()"
|
||||
val isNullExpression =
|
||||
factory.createExpressionFromText("a.$methodName", null) as PsiMethodCallExpression
|
||||
isNullExpression.methodExpression.qualifierExpression!!.replace(oldQualifier)
|
||||
element.replace(isNullExpression)
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-20
@@ -1,12 +1,13 @@
|
||||
package de.platon42.intellij.plugins.cajon.inspections
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.JavaElementVisitor
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiMethodCallExpression
|
||||
import com.intellij.psi.PsiType
|
||||
import de.platon42.intellij.plugins.cajon.quickfixes.ReplaceSimpleMethodCallQuickFix
|
||||
import org.jetbrains.annotations.NonNls
|
||||
|
||||
class AssertThatObjectIsNotNullInspection : AbstractAssertJInspection() {
|
||||
@@ -38,25 +39,10 @@ class AssertThatObjectIsNotNullInspection : AbstractAssertJInspection() {
|
||||
INSPECTION_MESSAGE,
|
||||
ProblemHighlightType.INFORMATION,
|
||||
null as TextRange?,
|
||||
ReplaceWithIsNotNullQuickFix()
|
||||
ReplaceSimpleMethodCallQuickFix(QUICKFIX_DESCRIPTION, "isNotNull()")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ReplaceWithIsNotNullQuickFix : LocalQuickFix {
|
||||
override fun getFamilyName() = QUICKFIX_DESCRIPTION
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val element = descriptor.startElement
|
||||
val factory = JavaPsiFacade.getElementFactory(element.project)
|
||||
val methodCallExpression = element as? PsiMethodCallExpression ?: return
|
||||
val oldQualifier = methodCallExpression.methodExpression.qualifierExpression ?: return
|
||||
val isNotNullExpression =
|
||||
factory.createExpressionFromText("a.isNotNull()", null) as PsiMethodCallExpression
|
||||
isNotNullExpression.methodExpression.qualifierExpression!!.replace(oldQualifier)
|
||||
element.replace(isNotNullExpression)
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-20
@@ -1,12 +1,13 @@
|
||||
package de.platon42.intellij.plugins.cajon.inspections
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.JavaElementVisitor
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiMethodCallExpression
|
||||
import com.intellij.psi.PsiType
|
||||
import de.platon42.intellij.plugins.cajon.quickfixes.ReplaceSimpleMethodCallQuickFix
|
||||
import org.jetbrains.annotations.NonNls
|
||||
|
||||
class AssertThatObjectIsNullInspection : AbstractAssertJInspection() {
|
||||
@@ -38,25 +39,10 @@ class AssertThatObjectIsNullInspection : AbstractAssertJInspection() {
|
||||
INSPECTION_MESSAGE,
|
||||
ProblemHighlightType.INFORMATION,
|
||||
null as TextRange?,
|
||||
ReplaceWithIsNullQuickFix()
|
||||
ReplaceSimpleMethodCallQuickFix(QUICKFIX_DESCRIPTION, "isNull()")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ReplaceWithIsNullQuickFix : LocalQuickFix {
|
||||
override fun getFamilyName() = QUICKFIX_DESCRIPTION
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val element = descriptor.startElement
|
||||
val factory = JavaPsiFacade.getElementFactory(element.project)
|
||||
val methodCallExpression = element as? PsiMethodCallExpression ?: return
|
||||
val oldQualifier = methodCallExpression.methodExpression.qualifierExpression ?: return
|
||||
val isNullExpression =
|
||||
factory.createExpressionFromText("a.isNull()", null) as PsiMethodCallExpression
|
||||
isNullExpression.methodExpression.qualifierExpression!!.replace(oldQualifier)
|
||||
element.replace(isNullExpression)
|
||||
}
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package de.platon42.intellij.plugins.cajon.inspections
|
||||
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.JavaElementVisitor
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiLiteralExpression
|
||||
import com.intellij.psi.PsiMethodCallExpression
|
||||
import de.platon42.intellij.plugins.cajon.quickfixes.ReplaceSimpleMethodCallQuickFix
|
||||
import org.jetbrains.annotations.NonNls
|
||||
|
||||
class AssertThatStringIsEmptyInspection : AbstractAssertJInspection() {
|
||||
|
||||
companion object {
|
||||
@NonNls
|
||||
private val DISPLAY_NAME = "Asserting an empty string"
|
||||
|
||||
@NonNls
|
||||
private val INSPECTION_MESSAGE = "isEqualTo(\"\") can be simplified to isEmpty()"
|
||||
|
||||
@NonNls
|
||||
private val QUICKFIX_DESCRIPTION = "Replace isEqualTo(\"\") with isEmpty()"
|
||||
}
|
||||
|
||||
override fun getDisplayName() = DISPLAY_NAME
|
||||
|
||||
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
||||
return object : JavaElementVisitor() {
|
||||
override fun visitMethodCallExpression(expression: PsiMethodCallExpression) {
|
||||
super.visitMethodCallExpression(expression)
|
||||
if (!IS_EQUAL_TO_OBJECT.test(expression)) {
|
||||
return
|
||||
}
|
||||
|
||||
val psiExpression = expression.argumentList.expressions[0] as? PsiLiteralExpression ?: return
|
||||
|
||||
if (psiExpression.value == "") {
|
||||
holder.registerProblem(
|
||||
expression,
|
||||
INSPECTION_MESSAGE,
|
||||
ProblemHighlightType.INFORMATION,
|
||||
null as TextRange?,
|
||||
ReplaceSimpleMethodCallQuickFix(QUICKFIX_DESCRIPTION, "isEmpty()")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package de.platon42.intellij.plugins.cajon.quickfixes
|
||||
|
||||
import com.intellij.codeInspection.LocalQuickFix
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.PsiMethodCallExpression
|
||||
|
||||
class ReplaceSimpleMethodCallQuickFix(private val description: String, private val replacementMethod: String) :
|
||||
LocalQuickFix {
|
||||
override fun getFamilyName() = description
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val element = descriptor.startElement
|
||||
val factory = JavaPsiFacade.getElementFactory(element.project)
|
||||
val methodCallExpression = element as? PsiMethodCallExpression ?: return
|
||||
val oldQualifier = methodCallExpression.methodExpression.qualifierExpression ?: return
|
||||
val isEmptyExpression =
|
||||
factory.createExpressionFromText("a.$replacementMethod", null) as PsiMethodCallExpression
|
||||
isEmptyExpression.methodExpression.qualifierExpression!!.replace(oldQualifier)
|
||||
element.replace(isEmptyExpression)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user