mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Log "Find why ..." actions to FUS
GitOrigin-RevId: f54b973046e5d2cada34c657210db1febdb6b3c2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
40bd98c2dc
commit
f865eca72a
@@ -318,18 +318,32 @@ public class DataflowExceptionAnalysisProvider implements ExceptionAnalysisProvi
|
||||
if (analysis == null) return null;
|
||||
String text = DfaBasedFilter.getPresentationText(analysis.myDfType, analysis.myAnchor.getType());
|
||||
if (text.isEmpty()) return null;
|
||||
return new AnAction(null, JavaBundle.message("action.dfa.from.stacktrace.text", analysis.myAnchor.getText(), text), null) {
|
||||
@Override
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
List<StackLine> nextFrames = nextFramesSupplier.get();
|
||||
StackFilter stackFilter = StackFilter.from(nextFrames);
|
||||
SliceAnalysisParams params = new SliceAnalysisParams();
|
||||
params.dataFlowToThis = true;
|
||||
params.scope = new AnalysisScope(GlobalSearchScope.allScope(myProject), myProject);
|
||||
params.scope.setSearchInLibraries(true);
|
||||
params.valueFilter = new JavaValueFilter(new DfaBasedFilter(analysis.myDfType), stackFilter);
|
||||
SliceManager.getInstance(myProject).createToolWindow(analysis.myAnchor, params);
|
||||
}
|
||||
};
|
||||
return new DfaFromStacktraceAction(analysis, text, nextFramesSupplier);
|
||||
}
|
||||
|
||||
private class DfaFromStacktraceAction extends AnAction {
|
||||
private final @NotNull AnalysisStartingPoint myAnalysis;
|
||||
private @NotNull final Supplier<List<StackLine>> myNextFramesSupplier;
|
||||
|
||||
private DfaFromStacktraceAction(@NotNull AnalysisStartingPoint analysis,
|
||||
String text,
|
||||
@NotNull Supplier<List<StackLine>> nextFramesSupplier) {
|
||||
super(null, JavaBundle
|
||||
.message("action.dfa.from.stacktrace.text", analysis.myAnchor.getText(), text), null);
|
||||
myAnalysis = analysis;
|
||||
myNextFramesSupplier = nextFramesSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
List<StackLine> nextFrames = myNextFramesSupplier.get();
|
||||
StackFilter stackFilter = StackFilter.from(nextFrames);
|
||||
SliceAnalysisParams params = new SliceAnalysisParams();
|
||||
params.dataFlowToThis = true;
|
||||
params.scope = new AnalysisScope(GlobalSearchScope.allScope(myProject), myProject);
|
||||
params.scope.setSearchInLibraries(true);
|
||||
params.valueFilter = new JavaValueFilter(new DfaBasedFilter(myAnalysis.myDfType), stackFilter);
|
||||
SliceManager.getInstance(myProject).createToolWindow(myAnalysis.myAnchor, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.execution.filters;
|
||||
|
||||
import com.intellij.execution.filters.ExceptionAnalysisProvider.StackLine;
|
||||
import com.intellij.ide.actions.ActionsCollector;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
@@ -483,6 +484,7 @@ public class ExceptionWorker {
|
||||
Disposer.dispose(b);
|
||||
}
|
||||
myAnalysisWasActivated = true;
|
||||
ActionsCollector.getInstance().record(project, action, null, element.getLanguage());
|
||||
action.actionPerformed(AnActionEvent.createFromAnAction(action, null, ActionPlaces.UNKNOWN, DataContext.EMPTY_CONTEXT));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user