Search in sources :

Example 11 with InspectionProfileImpl

use of com.intellij.codeInspection.ex.InspectionProfileImpl in project intellij-community by JetBrains.

the class CodeInspectionAction method getAdditionalActionSettings.

@Override
protected JComponent getAdditionalActionSettings(@NotNull final Project project, final BaseAnalysisActionDialog dialog) {
    final AdditionalPanel panel = new AdditionalPanel();
    final InspectionManagerEx manager = (InspectionManagerEx) InspectionManager.getInstance(project);
    final SchemesCombo<InspectionProfileImpl> profiles = (SchemesCombo<InspectionProfileImpl>) panel.myBrowseProfilesCombo.getComboBox();
    final InspectionProfileManager profileManager = InspectionProfileManager.getInstance();
    final ProjectInspectionProfileManager projectProfileManager = ProjectInspectionProfileManager.getInstance(project);
    panel.myBrowseProfilesCombo.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            final ExternalProfilesComboboxAwareInspectionToolsConfigurable errorConfigurable = createConfigurable(projectProfileManager, profiles);
            final MySingleConfigurableEditor editor = new MySingleConfigurableEditor(project, errorConfigurable, manager);
            if (editor.showAndGet()) {
                reloadProfiles(profiles, profileManager, projectProfileManager, project);
                if (errorConfigurable.mySelectedName != null) {
                    final InspectionProfileImpl profile = (errorConfigurable.mySelectedIsProjectProfile ? projectProfileManager : profileManager).getProfile(errorConfigurable.mySelectedName);
                    profiles.selectScheme(profile);
                }
            } else {
                //if profile was disabled and cancel after apply was pressed
                final InspectionProfile profile = profiles.getSelectedScheme();
                final boolean canExecute = profile != null && profile.isExecutable(project);
                dialog.setOKActionEnabled(canExecute);
            }
        }
    });
    profiles.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            myExternalProfile = profiles.getSelectedScheme();
            final boolean canExecute = myExternalProfile != null && myExternalProfile.isExecutable(project);
            dialog.setOKActionEnabled(canExecute);
            if (canExecute) {
                PropertiesComponent.getInstance(project).setValue(LAST_SELECTED_PROFILE_PROP, (myExternalProfile.isProjectLevel() ? 'p' : 'a') + myExternalProfile.getName());
                manager.setProfile(myExternalProfile.getName());
            }
        }
    });
    reloadProfiles(profiles, profileManager, projectProfileManager, project);
    return panel.myAdditionalPanel;
}
Also used : InspectionProfileImpl(com.intellij.codeInspection.ex.InspectionProfileImpl) InspectionProfile(com.intellij.codeInspection.InspectionProfile) ActionEvent(java.awt.event.ActionEvent) InspectionManagerEx(com.intellij.codeInspection.ex.InspectionManagerEx) ActionListener(java.awt.event.ActionListener) SchemesCombo(com.intellij.application.options.schemes.SchemesCombo) InspectionProfileManager(com.intellij.profile.codeInspection.InspectionProfileManager) ProjectInspectionProfileManager(com.intellij.profile.codeInspection.ProjectInspectionProfileManager) ProjectInspectionProfileManager(com.intellij.profile.codeInspection.ProjectInspectionProfileManager)

Example 12 with InspectionProfileImpl

use of com.intellij.codeInspection.ex.InspectionProfileImpl in project intellij-community by JetBrains.

the class RunInspectionAction method runInspection.

public static void runInspection(@NotNull final Project project, @NotNull String shortName, @Nullable VirtualFile virtualFile, PsiElement psiElement, PsiFile psiFile) {
    final PsiElement element = psiFile == null ? psiElement : psiFile;
    final InspectionProfile currentProfile = InspectionProjectProfileManager.getInstance(project).getCurrentProfile();
    final InspectionToolWrapper toolWrapper = element != null ? currentProfile.getInspectionTool(shortName, element) : currentProfile.getInspectionTool(shortName, project);
    LOGGER.assertTrue(toolWrapper != null, "Missed inspection: " + shortName);
    final InspectionManagerEx managerEx = (InspectionManagerEx) InspectionManager.getInstance(project);
    final Module module = virtualFile != null ? ModuleUtilCore.findModuleForFile(virtualFile, project) : null;
    AnalysisScope analysisScope = null;
    if (psiFile != null) {
        analysisScope = new AnalysisScope(psiFile);
    } else {
        if (virtualFile != null && virtualFile.isDirectory()) {
            final PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(virtualFile);
            if (psiDirectory != null) {
                analysisScope = new AnalysisScope(psiDirectory);
            }
        }
        if (analysisScope == null && virtualFile != null) {
            analysisScope = new AnalysisScope(project, Arrays.asList(virtualFile));
        }
        if (analysisScope == null) {
            analysisScope = new AnalysisScope(project);
        }
    }
    final AnalysisUIOptions options = AnalysisUIOptions.getInstance(project);
    final FileFilterPanel fileFilterPanel = new FileFilterPanel();
    fileFilterPanel.init(options);
    final AnalysisScope initialAnalysisScope = analysisScope;
    final BaseAnalysisActionDialog dialog = new BaseAnalysisActionDialog("Run '" + toolWrapper.getDisplayName() + "'", AnalysisScopeBundle.message("analysis.scope.title", InspectionsBundle.message("inspection.action.noun")), project, analysisScope, module != null ? module.getName() : null, true, options, psiElement) {

        private InspectionToolWrapper myUpdatedSettingsToolWrapper;

        @Nullable
        @Override
        protected JComponent getAdditionalActionSettings(Project project) {
            final JPanel fileFilter = fileFilterPanel.getPanel();
            if (toolWrapper.getTool().createOptionsPanel() != null) {
                JPanel additionPanel = new JPanel();
                additionPanel.setLayout(new BoxLayout(additionPanel, BoxLayout.Y_AXIS));
                additionPanel.add(fileFilter);
                //new InheritOptionsForToolPanel(toolWrapper.getShortName(), project);
                myUpdatedSettingsToolWrapper = copyToolWithSettings(toolWrapper);
                additionPanel.add(new TitledSeparator(IdeBundle.message("goto.inspection.action.choose.inherit.settings.from")));
                JComponent optionsPanel = myUpdatedSettingsToolWrapper.getTool().createOptionsPanel();
                LOGGER.assertTrue(optionsPanel != null);
                if (UIUtil.hasScrollPane(optionsPanel)) {
                    additionPanel.add(optionsPanel);
                } else {
                    additionPanel.add(ScrollPaneFactory.createScrollPane(optionsPanel, SideBorder.NONE));
                }
                return additionPanel;
            } else {
                return fileFilter;
            }
        }

        @NotNull
        @Override
        public AnalysisScope getScope(@NotNull AnalysisUIOptions uiOptions, @NotNull AnalysisScope defaultScope, @NotNull Project project, Module module) {
            final AnalysisScope scope = super.getScope(uiOptions, defaultScope, project, module);
            final GlobalSearchScope filterScope = fileFilterPanel.getSearchScope();
            if (filterScope == null) {
                return scope;
            }
            scope.setFilter(filterScope);
            return scope;
        }

        private AnalysisScope getScope() {
            return getScope(options, initialAnalysisScope, project, module);
        }

        private InspectionToolWrapper getToolWrapper() {
            return myUpdatedSettingsToolWrapper == null ? toolWrapper : myUpdatedSettingsToolWrapper;
        }

        @NotNull
        @Override
        protected Action[] createActions() {
            final List<Action> actions = new ArrayList<>();
            final boolean hasFixAll = toolWrapper.getTool() instanceof CleanupLocalInspectionTool;
            actions.add(new AbstractAction(hasFixAll ? AnalysisScopeBundle.message("action.analyze.verb") : CommonBundle.getOkButtonText()) {

                {
                    putValue(DEFAULT_ACTION, Boolean.TRUE);
                }

                @Override
                public void actionPerformed(ActionEvent e) {
                    RunInspectionIntention.rerunInspection(getToolWrapper(), managerEx, getScope(), null);
                    close(DialogWrapper.OK_EXIT_CODE);
                }
            });
            if (hasFixAll) {
                actions.add(new AbstractAction("Fix All") {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        InspectionToolWrapper wrapper = getToolWrapper();
                        InspectionProfileImpl cleanupToolProfile = RunInspectionIntention.createProfile(wrapper, managerEx, null);
                        managerEx.createNewGlobalContext(false).codeCleanup(getScope(), cleanupToolProfile, "Cleanup by " + wrapper.getDisplayName(), null, false);
                        close(DialogWrapper.OK_EXIT_CODE);
                    }
                });
            }
            actions.add(getCancelAction());
            if (SystemInfo.isMac) {
                Collections.reverse(actions);
            }
            return actions.toArray(new Action[actions.size()]);
        }
    };
    dialog.showAndGet();
}
Also used : InspectionProfileImpl(com.intellij.codeInspection.ex.InspectionProfileImpl) ActionEvent(java.awt.event.ActionEvent) AnActionEvent(com.intellij.openapi.actionSystem.AnActionEvent) ArrayList(java.util.ArrayList) NotNull(org.jetbrains.annotations.NotNull) BaseAnalysisActionDialog(com.intellij.analysis.BaseAnalysisActionDialog) AnalysisScope(com.intellij.analysis.AnalysisScope) GlobalSearchScope(com.intellij.psi.search.GlobalSearchScope) AnalysisUIOptions(com.intellij.analysis.AnalysisUIOptions) InspectionProfile(com.intellij.codeInspection.InspectionProfile) InspectionManagerEx(com.intellij.codeInspection.ex.InspectionManagerEx) Project(com.intellij.openapi.project.Project) CleanupLocalInspectionTool(com.intellij.codeInspection.CleanupLocalInspectionTool) TitledSeparator(com.intellij.ui.TitledSeparator) Module(com.intellij.openapi.module.Module) InspectionToolWrapper(com.intellij.codeInspection.ex.InspectionToolWrapper)

Example 13 with InspectionProfileImpl

use of com.intellij.codeInspection.ex.InspectionProfileImpl in project intellij-community by JetBrains.

the class CodeInspectionAction method getProfileToUse.

@NotNull
private InspectionProfileImpl getProfileToUse(@NotNull Project project, @NotNull InspectionProfileManager appProfileManager, @NotNull InspectionProjectProfileManager projectProfileManager) {
    final String lastSelectedProfile = PropertiesComponent.getInstance(project).getValue(LAST_SELECTED_PROFILE_PROP);
    if (lastSelectedProfile != null) {
        final char type = lastSelectedProfile.charAt(0);
        final String lastSelectedProfileName = lastSelectedProfile.substring(1);
        if (type == 'a') {
            final InspectionProfileImpl profile = appProfileManager.getProfile(lastSelectedProfileName, false);
            if (profile != null)
                return profile;
        } else {
            LOG.assertTrue(type == 'p', "Unexpected last selected profile: \'" + lastSelectedProfile + "\'");
            final InspectionProfileImpl profile = projectProfileManager.getProfile(lastSelectedProfileName, false);
            if (profile != null && profile.isProjectLevel())
                return profile;
        }
    }
    return getGlobalInspectionContext(project).getCurrentProfile();
}
Also used : InspectionProfileImpl(com.intellij.codeInspection.ex.InspectionProfileImpl) NotNull(org.jetbrains.annotations.NotNull)

Example 14 with InspectionProfileImpl

use of com.intellij.codeInspection.ex.InspectionProfileImpl in project intellij-community by JetBrains.

the class RegExpInspectionTestCase method highlightTest.

protected void highlightTest(@Language("RegExp") String code) {
    final LocalInspectionTool inspection = getInspection();
    myFixture.enableInspections(inspection);
    final HighlightDisplayKey displayKey = HighlightDisplayKey.find(inspection.getShortName());
    if (displayKey != null) {
        final Project project = myFixture.getProject();
        final InspectionProfileImpl currentProfile = ProjectInspectionProfileManager.getInstance(project).getCurrentProfile();
        final HighlightDisplayLevel errorLevel = currentProfile.getErrorLevel(displayKey, null);
        if (errorLevel == HighlightDisplayLevel.DO_NOT_SHOW) {
            currentProfile.setErrorLevel(displayKey, HighlightDisplayLevel.WARNING, project);
        }
    }
    myFixture.configureByText(RegExpFileType.INSTANCE, code);
    myFixture.testHighlighting();
}
Also used : Project(com.intellij.openapi.project.Project) InspectionProfileImpl(com.intellij.codeInspection.ex.InspectionProfileImpl) HighlightDisplayLevel(com.intellij.codeHighlighting.HighlightDisplayLevel) HighlightDisplayKey(com.intellij.codeInsight.daemon.HighlightDisplayKey) LocalInspectionTool(com.intellij.codeInspection.LocalInspectionTool)

Example 15 with InspectionProfileImpl

use of com.intellij.codeInspection.ex.InspectionProfileImpl in project intellij-community by JetBrains.

the class InspectionProfileSchemesPanel method copyToNewProfile.

@NotNull
private InspectionProfileModifiableModel copyToNewProfile(@NotNull InspectionProfileImpl selectedProfile, @NotNull Project project, @NotNull String newName, boolean modifyLevel) {
    final boolean isProjectLevel = selectedProfile.isProjectLevel() ^ modifyLevel;
    BaseInspectionProfileManager profileManager = isProjectLevel ? myProjectProfileManager : myAppProfileManager;
    InspectionProfileImpl inspectionProfile = new InspectionProfileImpl(newName, InspectionToolRegistrar.getInstance(), profileManager);
    inspectionProfile.copyFrom(selectedProfile);
    inspectionProfile.setName(newName);
    inspectionProfile.initInspectionTools(project);
    inspectionProfile.setProjectLevel(isProjectLevel);
    InspectionProfileModifiableModel modifiableModel = new InspectionProfileModifiableModel(inspectionProfile);
    modifiableModel.setModified(true);
    return modifiableModel;
}
Also used : BaseInspectionProfileManager(com.intellij.profile.codeInspection.BaseInspectionProfileManager) InspectionProfileImpl(com.intellij.codeInspection.ex.InspectionProfileImpl) InspectionProfileModifiableModel(com.intellij.codeInspection.ex.InspectionProfileModifiableModel) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

InspectionProfileImpl (com.intellij.codeInspection.ex.InspectionProfileImpl)24 HighlightDisplayKey (com.intellij.codeInsight.daemon.HighlightDisplayKey)7 HighlightDisplayLevel (com.intellij.codeHighlighting.HighlightDisplayLevel)5 InspectionToolWrapper (com.intellij.codeInspection.ex.InspectionToolWrapper)5 Project (com.intellij.openapi.project.Project)5 NotNull (org.jetbrains.annotations.NotNull)5 SingleInspectionProfilePanel (com.intellij.profile.codeInspection.ui.SingleInspectionProfilePanel)3 ActionEvent (java.awt.event.ActionEvent)3 InspectionProfile (com.intellij.codeInspection.InspectionProfile)2 LocalInspectionTool (com.intellij.codeInspection.LocalInspectionTool)2 InspectionManagerEx (com.intellij.codeInspection.ex.InspectionManagerEx)2 InspectionProfileModifiableModel (com.intellij.codeInspection.ex.InspectionProfileModifiableModel)2 AnActionEvent (com.intellij.openapi.actionSystem.AnActionEvent)2 PsiFile (com.intellij.psi.PsiFile)2 Element (org.jdom.Element)2 AnalysisScope (com.intellij.analysis.AnalysisScope)1 AnalysisUIOptions (com.intellij.analysis.AnalysisUIOptions)1 BaseAnalysisActionDialog (com.intellij.analysis.BaseAnalysisActionDialog)1 DescriptionAwareSchemeActions (com.intellij.application.options.schemes.DescriptionAwareSchemeActions)1 SchemesCombo (com.intellij.application.options.schemes.SchemesCombo)1