public static InspectionToolWrapper findTool2RunInBatch( @NotNull Project project, @Nullable PsiElement element, @NotNull String name) { final InspectionProfile inspectionProfile = InspectionProjectProfileManager.getInstance(project).getInspectionProfile(); final InspectionToolWrapper toolWrapper = element == null ? inspectionProfile.getInspectionTool(name, project) : inspectionProfile.getInspectionTool(name, element); if (toolWrapper instanceof LocalInspectionToolWrapper && ((LocalInspectionToolWrapper) toolWrapper).isUnfair()) { final LocalInspectionTool inspectionTool = ((LocalInspectionToolWrapper) toolWrapper).getTool(); if (inspectionTool instanceof PairedUnfairLocalInspectionTool) { final String oppositeShortName = ((PairedUnfairLocalInspectionTool) inspectionTool).getInspectionForBatchShortName(); if (oppositeShortName != null) { return element == null ? inspectionProfile.getInspectionTool(oppositeShortName, project) : inspectionProfile.getInspectionTool(oppositeShortName, element); } } return null; } return toolWrapper; }
public boolean canCleanup(@NotNull PsiElement element) { if (myCanCleanup == null) { InspectionProfile profile = InspectionProjectProfileManager.getInstance(element.getProject()) .getInspectionProfile(); final HighlightDisplayKey key = myKey; if (key == null) { myCanCleanup = false; } else { InspectionToolWrapper toolWrapper = profile.getInspectionTool(key.toString(), element); myCanCleanup = toolWrapper != null && toolWrapper.isCleanupTool(); } } return myCanCleanup; }
@Nullable public List<IntentionAction> getOptions(@NotNull PsiElement element, @Nullable Editor editor) { if (editor != null && Boolean.FALSE.equals( editor.getUserData(IntentionManager.SHOW_INTENTION_OPTIONS_KEY))) { return null; } List<IntentionAction> options = myOptions; HighlightDisplayKey key = myKey; if (myProblemGroup != null) { String problemName = myProblemGroup.getProblemName(); HighlightDisplayKey problemGroupKey = problemName != null ? HighlightDisplayKey.findById(problemName) : null; if (problemGroupKey != null) { key = problemGroupKey; } } if (options != null || key == null) { return options; } IntentionManager intentionManager = IntentionManager.getInstance(); List<IntentionAction> newOptions = intentionManager.getStandardIntentionOptions(key, element); InspectionProfile profile = InspectionProjectProfileManager.getInstance(element.getProject()).getInspectionProfile(); InspectionToolWrapper toolWrapper = profile.getInspectionTool(key.toString(), element); if (!(toolWrapper instanceof LocalInspectionToolWrapper)) { HighlightDisplayKey idkey = HighlightDisplayKey.findById(key.toString()); if (idkey != null) { toolWrapper = profile.getInspectionTool(idkey.toString(), element); } } if (toolWrapper != null) { myCanCleanup = toolWrapper.isCleanupTool(); ContainerUtil.addIfNotNull( newOptions, intentionManager.createFixAllIntention(toolWrapper, myAction)); InspectionProfileEntry wrappedTool = toolWrapper instanceof LocalInspectionToolWrapper ? ((LocalInspectionToolWrapper) toolWrapper).getTool() : ((GlobalInspectionToolWrapper) toolWrapper).getTool(); if (wrappedTool instanceof CustomSuppressableInspectionTool) { final IntentionAction[] suppressActions = ((CustomSuppressableInspectionTool) wrappedTool).getSuppressActions(element); if (suppressActions != null) { ContainerUtil.addAll(newOptions, suppressActions); } } else { SuppressQuickFix[] suppressFixes = wrappedTool.getBatchSuppressActions(element); if (suppressFixes.length > 0) { ContainerUtil.addAll( newOptions, ContainerUtil.map( suppressFixes, new Function<SuppressQuickFix, IntentionAction>() { @Override public IntentionAction fun(SuppressQuickFix fix) { return SuppressIntentionActionFromFix.convertBatchToSuppressIntentionAction( fix); } })); } } } if (myProblemGroup instanceof SuppressableProblemGroup) { final IntentionAction[] suppressActions = ((SuppressableProblemGroup) myProblemGroup).getSuppressActions(element); ContainerUtil.addAll(newOptions, suppressActions); } synchronized (this) { options = myOptions; if (options == null) { myOptions = options = newOptions; } myKey = null; } return options; }
@Nullable public List<IntentionAction> getOptions(@NotNull PsiElement element, @Nullable Editor editor) { if (editor != null && Boolean.FALSE.equals( editor.getUserData(IntentionManager.SHOW_INTENTION_OPTIONS_KEY))) { return null; } List<IntentionAction> options = myOptions; HighlightDisplayKey key = myKey; if (options != null || key == null) { return options; } List<IntentionAction> newOptions = IntentionManager.getInstance().getStandardIntentionOptions(key, element); InspectionProfile profile = InspectionProjectProfileManager.getInstance(element.getProject()).getInspectionProfile(); InspectionProfileEntry tool = profile.getInspectionTool(key.toString(), element); if (!(tool instanceof LocalInspectionToolWrapper)) { HighlightDisplayKey idkey = HighlightDisplayKey.findById(key.toString()); if (idkey != null) { tool = profile.getInspectionTool(idkey.toString(), element); } } InspectionProfileEntry wrappedTool = tool; if (tool instanceof LocalInspectionToolWrapper) { wrappedTool = ((LocalInspectionToolWrapper) tool).getTool(); Class aClass = myAction.getClass(); if (myAction instanceof QuickFixWrapper) { aClass = ((QuickFixWrapper) myAction).getFix().getClass(); } newOptions.add(new CleanupInspectionIntention((LocalInspectionToolWrapper) tool, aClass)); } else if (tool instanceof GlobalInspectionToolWrapper) { wrappedTool = ((GlobalInspectionToolWrapper) tool).getTool(); if (wrappedTool instanceof GlobalSimpleInspectionTool && (myAction instanceof LocalQuickFix || myAction instanceof QuickFixWrapper)) { Class aClass = myAction.getClass(); if (myAction instanceof QuickFixWrapper) { aClass = ((QuickFixWrapper) myAction).getFix().getClass(); } newOptions.add( new CleanupInspectionIntention((GlobalInspectionToolWrapper) tool, aClass)); } } if (wrappedTool instanceof CustomSuppressableInspectionTool) { final IntentionAction[] suppressActions = ((CustomSuppressableInspectionTool) wrappedTool).getSuppressActions(element); if (suppressActions != null) { ContainerUtil.addAll(newOptions, suppressActions); } } if (wrappedTool instanceof BatchSuppressableTool) { final SuppressQuickFix[] suppressActions = ((BatchSuppressableTool) wrappedTool).getBatchSuppressActions(element); ContainerUtil.addAll( newOptions, ContainerUtil.map( suppressActions, new Function<SuppressQuickFix, IntentionAction>() { @Override public IntentionAction fun(SuppressQuickFix fix) { return InspectionManagerEx.convertBatchToSuppressIntentionAction(fix); } })); } synchronized (this) { options = myOptions; if (options == null) { myOptions = options = newOptions; } myKey = null; } return options; }