diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/GlobalInspectionContextTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/GlobalInspectionContextTest.java index 809f49672384..354ea4562a72 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/GlobalInspectionContextTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/GlobalInspectionContextTest.java @@ -18,8 +18,12 @@ package com.intellij.codeInspection; import com.intellij.JavaTestUtil; import com.intellij.analysis.AnalysisScope; import com.intellij.codeInsight.CodeInsightTestCase; +import com.intellij.codeInspection.actions.RunInspectionIntention; import com.intellij.codeInspection.ex.*; import com.intellij.codeInspection.visibility.VisibilityInspection; +import com.intellij.profile.codeInspection.InspectionProfileManager; + +import java.util.ArrayList; /** * @author Dmitry Avdeev @@ -50,6 +54,14 @@ public class GlobalInspectionContextTest extends CodeInsightTestCase { assertEquals(1, tool.getProblemDescriptors().size()); } + public void testRunInspectionContext() throws Exception { + InspectionProfileEntry tool = + ((InspectionProfile)InspectionProfileManager.getInstance().getRootProfile()).getInspectionTool("CanBeFinal"); + GlobalInspectionContextImpl context = RunInspectionIntention.createContext(tool, (InspectionManagerEx)InspectionManager.getInstance(myProject), null); + context.initializeTools(new ArrayList(), new ArrayList(), new ArrayList()); + assertEquals(1, context.getTools().size()); + } + @Override public void setUp() throws Exception { super.setUp(); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java b/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java index f24065b8c55f..eea32c8968f1 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java @@ -98,6 +98,11 @@ public class RunInspectionIntention implements IntentionAction, HighPriorityActi public static void rerunInspection(final InspectionProfileEntry baseTool, final InspectionManagerEx managerEx, final AnalysisScope scope, PsiElement psiElement) { + GlobalInspectionContextImpl inspectionContext = createContext(baseTool, managerEx, psiElement); + inspectionContext.doInspections(scope, managerEx); + } + + public static GlobalInspectionContextImpl createContext(InspectionProfileEntry baseTool, InspectionManagerEx managerEx, PsiElement psiElement) { final InspectionProfileImpl profile = new InspectionProfileImpl(baseTool.getDisplayName()); final InspectionProfileImpl model = (InspectionProfileImpl)profile.getModifiableModel(); model.disableAllTools(); @@ -113,7 +118,7 @@ public class RunInspectionIntention implements IntentionAction, HighPriorityActi model.setEditable(baseTool.getDisplayName()); final GlobalInspectionContextImpl inspectionContext = managerEx.createNewGlobalContext(false); inspectionContext.setExternalProfile(model); - inspectionContext.doInspections(scope, managerEx); + return inspectionContext; } public boolean startInWriteAction() { diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java index f42c5b62f97e..ec6ff529c395 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java @@ -493,6 +493,9 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel, } myTools.put(tool.getShortName(), toolsList); } + if (mySource != null) { + copyToolsConfigurations(mySource, project); + } return true; }