mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[kssr] IJ-CR-24168 Fix local class false positive in JUnitUnconstructableTestCase inspection
GitOrigin-RevId: 65a2b5b8a4f8f5c3cb9648e79383ae70d30cc156
This commit is contained in:
committed by
intellij-monorepo-bot
parent
44d6296f2b
commit
aa734cf40c
@@ -25,4 +25,12 @@ fun UAnnotated.findAnnotations(fqNames: Collection<String>) = uAnnotations.filte
|
||||
*/
|
||||
fun UFile.allClasses() = classes.toTypedArray() + classes.flatMap { it.allInnerClasses().toList() }
|
||||
|
||||
fun UClass.allInnerClasses(): Array<UClass> = innerClasses + innerClasses.flatMap { it.allInnerClasses().toList() }
|
||||
fun UClass.allInnerClasses(): Array<UClass> = innerClasses + innerClasses.flatMap { it.allInnerClasses().toList() }
|
||||
|
||||
fun UClass.isAnonymousOrLocal(): Boolean = this is UAnonymousClass || isLocal()
|
||||
|
||||
fun UClass.isLocal(): Boolean {
|
||||
val parent = uastParent
|
||||
if (parent is UDeclarationsExpression && parent.uastParent is UBlockExpression) return true
|
||||
return if (parent is UClass) parent.isLocal() else false
|
||||
}
|
||||
@@ -2,15 +2,11 @@
|
||||
package com.intellij.codeInspection.test.junit
|
||||
|
||||
import com.intellij.analysis.JvmAnalysisBundle
|
||||
import com.intellij.codeInspection.AbstractBaseUastLocalInspectionTool
|
||||
import com.intellij.codeInspection.InspectionManager
|
||||
import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.psi.PsiTypeParameter
|
||||
import com.siyeh.ig.psiutils.TestUtils
|
||||
import com.siyeh.ig.psiutils.TypeUtils
|
||||
import org.jetbrains.uast.UAnonymousClass
|
||||
import org.jetbrains.uast.UClass
|
||||
|
||||
class JUnitUnconstructableTestCaseInspection : AbstractBaseUastLocalInspectionTool() {
|
||||
@@ -21,7 +17,7 @@ class JUnitUnconstructableTestCaseInspection : AbstractBaseUastLocalInspectionTo
|
||||
if (javaClass.hasModifier(JvmModifier.ABSTRACT)) return emptyArray()
|
||||
if (javaClass is PsiTypeParameter) return emptyArray()
|
||||
if (TestUtils.isJUnitTestClass(javaClass)) { // JUnit 3
|
||||
if (!javaClass.hasModifier(JvmModifier.PUBLIC) && aClass !is UAnonymousClass) {
|
||||
if (!javaClass.hasModifier(JvmModifier.PUBLIC) && !aClass.isAnonymousOrLocal()) {
|
||||
val message = JvmAnalysisBundle.message("jvm.inspections.unconstructable.test.case.not.public.descriptor")
|
||||
return arrayOf(
|
||||
manager.createProblemDescriptor(
|
||||
@@ -44,7 +40,7 @@ class JUnitUnconstructableTestCaseInspection : AbstractBaseUastLocalInspectionTo
|
||||
}
|
||||
}
|
||||
} else if (TestUtils.isJUnit4TestClass(javaClass, false)) { // JUnit 4
|
||||
if (!javaClass.hasModifier(JvmModifier.PUBLIC) && aClass !is UAnonymousClass) {
|
||||
if (!javaClass.hasModifier(JvmModifier.PUBLIC) && !aClass.isAnonymousOrLocal()) {
|
||||
val message = JvmAnalysisBundle.message("jvm.inspections.unconstructable.test.case.not.public.descriptor")
|
||||
return arrayOf(
|
||||
manager.createProblemDescriptor(
|
||||
|
||||
@@ -61,6 +61,18 @@ class JavaJUnitUnconstructableInspectionTest : JUnitUnconstructableTestCaseTestB
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun testUnconstructableJUnit3TestCaseLocalClass() {
|
||||
myFixture.testHighlighting(ULanguage.JAVA, """
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class UnconstructableJUnit3TestCaseLocalClass {
|
||||
public static void main() {
|
||||
class LocalClass extends TestCase { }
|
||||
}
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun testUnconstructableJUnit4TestCase1() {
|
||||
myFixture.testHighlighting(ULanguage.JAVA, """
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -55,6 +55,16 @@ class KotlinJUnitUnconstructableInspectionTest : JUnitUnconstructableTestCaseTes
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun testUnconstructableJUnit3TestCaseLocalClass() {
|
||||
myFixture.testHighlighting(ULanguage.KOTLIN, """
|
||||
import junit.framework.TestCase
|
||||
|
||||
fun main () {
|
||||
class LocalClass : TestCase() { }
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun testUnconstructableJUnit4TestCase1() {
|
||||
myFixture.testHighlighting(ULanguage.KOTLIN, """
|
||||
import org.junit.Test
|
||||
|
||||
Reference in New Issue
Block a user