mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[devkit] IDEA-323201 simplify test data, improve wording, make class internal
GitOrigin-RevId: efb1f88a92264c43790383ca695874cc7424f3ea
This commit is contained in:
committed by
intellij-monorepo-bot
parent
36289bbb65
commit
9db39a03d2
+2
-2
@@ -1,9 +1,9 @@
|
||||
<html>
|
||||
<body>
|
||||
Reports static initialization in <a href="https://plugins.jetbrains.com/docs/intellij/plugin-extensions.html">IDE extensions</a>.
|
||||
Reports static initialization in <a href="https://plugins.jetbrains.com/docs/intellij/plugin-extensions.html">extension point implementations</a>.
|
||||
<p>
|
||||
Static initialization is performed once the class is loaded, which may cause excessive classloading or early initialization of heavy resources.
|
||||
Since IDE extensions are supposed to be cheap to create, they must not have static initializers.
|
||||
Since extension point implementations are supposed to be cheap to create, they must not have static initializers.
|
||||
</p>
|
||||
<p><small>New in 2023.3</small>
|
||||
</body>
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
implementationClass="org.jetbrains.idea.devkit.inspections.IncorrectProcessCanceledExceptionHandlingInspection"
|
||||
key="inspections.incorrect.process.canceled.exception.handling.display.name"/>
|
||||
|
||||
<localInspection language="UAST" shortName="StaticInitializationInExtensions" groupPathKey="inspections.group.path"
|
||||
<localInspection language="UAST" groupPathKey="inspections.group.path"
|
||||
projectType="INTELLIJ_PLUGIN"
|
||||
key="inspections.static.initialization.in.extensions.name" groupKey="inspections.group.code"
|
||||
enabledByDefault="false" level="WARNING"
|
||||
|
||||
@@ -691,8 +691,8 @@ inspections.incorrect.implicit.process.canceled.exception.inheritor.handling.nam
|
||||
update.ide.from.sources=Update &IDE from sources
|
||||
update.ide.from.sources.option=from sources
|
||||
|
||||
inspections.static.initialization.in.extensions.name=Static initialization in IDE extensions
|
||||
inspections.static.initialization.in.extensions.message=IDE extensions must not use static initialization
|
||||
inspections.static.initialization.in.extensions.name=Static initialization in extension point implementations
|
||||
inspections.static.initialization.in.extensions.message=Extension point implementations must not use static initialization
|
||||
|
||||
inspections.listener.implementation.must.not.be.disposable.name=Listener implementation implements 'Disposable'
|
||||
inspections.listener.implementation.must.not.implement.disposable=Listener implementation must not implement 'Disposable'
|
||||
+4
-5
@@ -17,7 +17,7 @@ import org.jetbrains.uast.UClassInitializer
|
||||
import org.jetbrains.uast.getParentOfType
|
||||
import org.jetbrains.uast.visitor.AbstractUastNonRecursiveVisitor
|
||||
|
||||
class StaticInitializationInExtensionsInspection : DevKitUastInspectionBase() {
|
||||
internal class StaticInitializationInExtensionsInspection : DevKitUastInspectionBase() {
|
||||
|
||||
override fun buildInternalVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
||||
// UAST doesn't work with Kotlin class initializers (they are UMethod's, not UClassInitializer's),
|
||||
@@ -38,10 +38,9 @@ class StaticInitializationInExtensionsInspection : DevKitUastInspectionBase() {
|
||||
if (!ExtensionUtil.isExtensionPointImplementationCandidate(psiClass)) return true
|
||||
if (!ExtensionUtil.isInstantiatedExtension(psiClass) { ExtensionUtil.hasServiceBeanFqn(it) }) return true
|
||||
|
||||
// try using 'static' modifier as anchor
|
||||
val anchor = (node.javaPsi as? PsiModifierListOwner)?.modifierList?.let {
|
||||
findModifierInList(it, PsiModifier.STATIC)
|
||||
} ?: node.javaPsi ?: return true
|
||||
// using 'static' modifier as anchor
|
||||
val modifierList = (node.javaPsi as PsiModifierListOwner).modifierList!!
|
||||
val anchor = findModifierInList(modifierList, PsiModifier.STATIC)!!
|
||||
|
||||
holder.registerProblem(
|
||||
anchor,
|
||||
|
||||
+1
-3
@@ -1,7 +1,5 @@
|
||||
class ExtensionWithStaticInitialization implements MyExtension {
|
||||
|
||||
<warning descr="IDE extensions must not use static initialization">static</warning> {
|
||||
System.out.println();
|
||||
}
|
||||
<warning descr="Extension point implementations must not use static initialization">static</warning> { }
|
||||
|
||||
}
|
||||
+1
-3
@@ -1,7 +1,5 @@
|
||||
class ExtensionWithoutStaticInitialization implements MyExtension {
|
||||
|
||||
ExtensionWithoutStaticInitialization() {
|
||||
System.out.println();
|
||||
}
|
||||
ExtensionWithoutStaticInitialization() { }
|
||||
|
||||
}
|
||||
+1
-3
@@ -1,5 +1,3 @@
|
||||
class NonExtension {
|
||||
static {
|
||||
System.out.println();
|
||||
}
|
||||
static { }
|
||||
}
|
||||
+2
-8
@@ -1,13 +1,7 @@
|
||||
@file:Suppress("UNUSED_VARIABLE")
|
||||
|
||||
class ExtensionWithStaticInitialization : MyExtension {
|
||||
companion object {
|
||||
<warning descr="IDE extensions must not use static initialization">init</warning> {
|
||||
val a = 0
|
||||
}
|
||||
<warning descr="Extension point implementations must not use static initialization">init</warning> { }
|
||||
|
||||
<warning descr="IDE extensions must not use static initialization">init</warning> {
|
||||
val b = 0
|
||||
}
|
||||
<warning descr="Extension point implementations must not use static initialization">init</warning> { }
|
||||
}
|
||||
}
|
||||
+1
-5
@@ -1,7 +1,3 @@
|
||||
@file:Suppress("UNUSED_VARIABLE")
|
||||
|
||||
class ExtensionWithoutStaticInitialization : MyExtension {
|
||||
init {
|
||||
val a = 0
|
||||
}
|
||||
init { }
|
||||
}
|
||||
+1
-5
@@ -1,9 +1,5 @@
|
||||
@file:Suppress("UNUSED_VARIABLE")
|
||||
|
||||
class NonExtension {
|
||||
companion object {
|
||||
init {
|
||||
val a = 0
|
||||
}
|
||||
init { }
|
||||
}
|
||||
}
|
||||
+1
-3
@@ -27,9 +27,7 @@ abstract class StaticInitializationInExtensionsInspectionTestBase : PluginModule
|
||||
"""
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
|
||||
public interface MyExtension {
|
||||
ExtensionPointName<MyExtension> EP_NAME = new ExtensionPointName<>("com.intellij.example.myExtension");
|
||||
}
|
||||
public interface MyExtension { }
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user