diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectListener.java b/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectListener.java index 75b55fe69d54..3b62ebe0c982 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectListener.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectListener.java @@ -4,10 +4,17 @@ package com.intellij.codeInspection.ex; public interface InspectListener { default void inspectionFinished(long start, long finish, long threadId, InspectionToolWrapper tool, InspectionKind kind) {} + default void activityFinished(long start, long finish, long threadId, ActivityKind activityKind) {} + enum InspectionKind { LOCAL, LOCAL_PRIORITY, GLOBAL_SIMPLE, GLOBAL } + + enum ActivityKind { + REFERENCE_SEARCH, + GLOBAL_POST_RUN_ACTIVITIES + } } diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ex/inspectionEvents.kt b/platform/analysis-impl/src/com/intellij/codeInspection/ex/inspectionEvents.kt index 94620a407466..f78af5f4f111 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ex/inspectionEvents.kt +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ex/inspectionEvents.kt @@ -12,4 +12,15 @@ fun InspectListener.reportWhenInspectionFinished(toolWrapper: InspectionToolWrap inspectionFinished(start, System.nanoTime(), Thread.currentThread().id, toolWrapper, kind) throw e } +} + +fun InspectListener.reportWhenActivityFinished(activityKind: InspectListener.ActivityKind, activity: Runnable) { + val start = System.nanoTime() + try { + activity.run() + activityFinished(start, System.nanoTime(), Thread.currentThread().id, activityKind) + } catch (e: Throwable ) { + activityFinished(start, System.nanoTime(), Thread.currentThread().id, activityKind) + throw e + } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java index 84d976fc8e27..5184fa16f28d 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java @@ -76,6 +76,7 @@ import java.util.concurrent.*; import java.util.function.Predicate; import static com.intellij.codeInspection.ex.InspectListener.InspectionKind.*; +import static com.intellij.codeInspection.ex.InspectionEventsKt.reportWhenActivityFinished; import static com.intellij.codeInspection.ex.InspectionEventsKt.reportWhenInspectionFinished; public class GlobalInspectionContextImpl extends GlobalInspectionContextEx { @@ -564,7 +565,12 @@ public class GlobalInspectionContextImpl extends GlobalInspectionContextEx { try { if (tool.isGraphNeeded()) { try { - ((RefManagerImpl)getRefManager()).findAllDeclarations(); + reportWhenActivityFinished( + myInspectTopicPublisher, + InspectListener.ActivityKind.REFERENCE_SEARCH, + () -> { + ((RefManagerImpl)getRefManager()).findAllDeclarations(); + }); } catch (Throwable e) { getStdJobDescriptors().BUILD_GRAPH.setDoneAmount(0); @@ -601,7 +607,16 @@ public class GlobalInspectionContextImpl extends GlobalInspectionContextEx { } } } + reportWhenActivityFinished( + myInspectTopicPublisher, + InspectListener.ActivityKind.GLOBAL_POST_RUN_ACTIVITIES, + () -> { + processPostRunActivities(needRepeatSearchRequest); + }); + addProblemsToView(globalTools); + } + private void processPostRunActivities(List> needRepeatSearchRequest) { for (GlobalInspectionContextExtension extension : myExtensions.values()) { try { extension.performPostRunActivities(needRepeatSearchRequest, this); @@ -613,8 +628,6 @@ public class GlobalInspectionContextImpl extends GlobalInspectionContextEx { LOG.error(e); } } - - addProblemsToView(globalTools); } public ActionCallback initializeViewIfNeeded() {