diff options
author | Alex Ruiz | 2012-04-26 18:23:00 +0000 |
---|---|---|
committer | Sergey Prigogin | 2012-04-27 03:02:11 +0000 |
commit | 181907f2fd9fab50a6753ac1f495ec1486d3d25f (patch) | |
tree | 7c5c17e3cbf4f4305ca6959f56745cead0271f7c /codan | |
parent | 73f53173ecee33b2b6df44216075a001ff9338ce (diff) | |
download | org.eclipse.cdt-181907f2fd9fab50a6753ac1f495ec1486d3d25f.tar.gz org.eclipse.cdt-181907f2fd9fab50a6753ac1f495ec1486d3d25f.tar.xz org.eclipse.cdt-181907f2fd9fab50a6753ac1f495ec1486d3d25f.zip |
Bug 372551. Fixed running checkers on file open. Split "On file save"
launch mode into "On file save" and "On file open". Removed warnings in
project org.eclipse.cdt.codan.ui.cxx.
Change-Id: I7f0bc16731ba36e8048904f19836da9ae47514de
Reviewed-on: https://git.eclipse.org/r/5665
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Diffstat (limited to 'codan')
7 files changed, 45 insertions, 21 deletions
diff --git a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/externaltool/AbstractExternalToolBasedChecker.java b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/externaltool/AbstractExternalToolBasedChecker.java index 20b7b29ce9c..41b38c177bf 100644 --- a/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/externaltool/AbstractExternalToolBasedChecker.java +++ b/codan/org.eclipse.cdt.codan.core.cxx/src/org/eclipse/cdt/codan/core/cxx/externaltool/AbstractExternalToolBasedChecker.java @@ -162,6 +162,7 @@ public abstract class AbstractExternalToolBasedChecker extends AbstractCheckerWi getLaunchModePreference(problem).enableInLaunchModes( CheckerLaunchMode.RUN_ON_FULL_BUILD, CheckerLaunchMode.RUN_ON_INC_BUILD, + CheckerLaunchMode.RUN_ON_FILE_OPEN, CheckerLaunchMode.RUN_ON_FILE_SAVE, CheckerLaunchMode.RUN_ON_DEMAND); addPreference(problem, settings.getPath()); diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CheckerLaunchMode.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CheckerLaunchMode.java index 677bb75051c..660cceb3576 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CheckerLaunchMode.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/CheckerLaunchMode.java @@ -31,8 +31,13 @@ public enum CheckerLaunchMode { */ RUN_ON_INC_BUILD, /** - * Checker runs when a file is saved or opened. Checker will not run if the file is an editor - * with unsaved changes. + * Checker runs when a file is opened. + * @since 2.1 + */ + RUN_ON_FILE_OPEN, + /** + * Checker runs when a file is saved. Checker will not run if the file is an editor with unsaved + * changes. * @since 2.1 */ RUN_ON_FILE_SAVE, diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/CodanCReconciler.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/CodanCReconciler.java index 687898f9c69..18b491f19ee 100644 --- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/CodanCReconciler.java +++ b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/CodanCReconciler.java @@ -21,7 +21,6 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.ui.texteditor.ITextEditor; /** * @author Alena @@ -29,18 +28,14 @@ import org.eclipse.ui.texteditor.ITextEditor; public class CodanCReconciler implements ICReconcilingListener { private CxxCodanReconciler reconsiler = new CxxCodanReconciler(); - void install(ITextEditor editor) { - if (editor instanceof CEditor) { - initialize(); - ((CEditor) editor).addReconcileListener(this); - } + void install(CEditor editor) { + initialize(); + editor.addReconcileListener(this); } - void uninstall(ITextEditor editor) { - if (editor instanceof CEditor) { - initialize(); - ((CEditor) editor).removeReconcileListener(this); - } + void uninstall(CEditor editor) { + initialize(); + editor.removeReconcileListener(this); } /** diff --git a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Startup.java b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Startup.java index 0075bce4094..fa26b709672 100644 --- a/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Startup.java +++ b/codan/org.eclipse.cdt.codan.ui.cxx/src/org/eclipse/cdt/codan/internal/ui/cxx/Startup.java @@ -10,6 +10,13 @@ *******************************************************************************/ package org.eclipse.cdt.codan.internal.ui.cxx; +import org.eclipse.cdt.codan.core.CodanRuntime; +import org.eclipse.cdt.codan.core.model.CheckerLaunchMode; +import org.eclipse.cdt.codan.internal.core.CodanBuilder; +import org.eclipse.cdt.internal.ui.editor.CEditor; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IPartListener2; import org.eclipse.ui.IStartup; @@ -19,12 +26,13 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.ITextEditor; /** * @author Alena Laskavaia */ public class Startup implements IStartup { + private static final IProgressMonitor NULL_PROGRESS_MONITOR = new NullProgressMonitor(); + /* * (non-Javadoc) * @@ -44,7 +52,7 @@ public class Startup implements IStartup { IWorkbenchWindow active = workbench.getActiveWorkbenchWindow(); final IWorkbenchPage page = active.getActivePage(); IPartListener2 partListener = new IPartListener2() { - CodanCReconciler reconsiler = new CodanCReconciler(); + CodanCReconciler reconciler = new CodanCReconciler(); public void partActivated(IWorkbenchPartReference partRef) { } @@ -53,11 +61,21 @@ public class Startup implements IStartup { } public void partOpened(IWorkbenchPartReference partRef) { - IWorkbenchPart editor = partRef.getPart(false); - if (editor instanceof ITextEditor) { - reconsiler.install((ITextEditor) editor); + IWorkbenchPart part = partRef.getPart(false); + if (part instanceof CEditor) { + CEditor editor = (CEditor) part; + reconciler.install(editor); + IResource resource = (IResource) editor.getEditorInput().getAdapter(IResource.class); + if (resource != null) { + processResource(resource); + } } } + + private void processResource(IResource resource) { + CodanBuilder builder = (CodanBuilder) CodanRuntime.getInstance().getBuilder(); + builder.processResource(resource, NULL_PROGRESS_MONITOR, CheckerLaunchMode.RUN_ON_FILE_OPEN); + } public void partHidden(IWorkbenchPartReference partRef) { } @@ -67,8 +85,8 @@ public class Startup implements IStartup { public void partClosed(IWorkbenchPartReference partRef) { IWorkbenchPart part = partRef.getPart(false); - if (part instanceof ITextEditor) { - reconsiler.uninstall((ITextEditor) part); + if (part instanceof CEditor) { + reconciler.uninstall((CEditor) part); } } diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java index cc8c5539b3f..821c5c4d540 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java @@ -9,6 +9,7 @@ * Alena Laskavaia - initial API and implementation * IBM Corporation * Sergey Prigogin (Google) + * Alex Ruiz (Google) *******************************************************************************/ package org.eclipse.cdt.codan.internal.ui; @@ -88,6 +89,7 @@ public class CodanUIMessages extends NLS { public static String LaunchModesPropertyPage_RunOnFullBuild; public static String LaunchModesPropertyPage_RunOnIncrementalBuild; public static String LaunchModesPropertyPage_RunOnFileSave; + public static String LaunchModesPropertyPage_RunOnFileOpen; static { NLS.initializeMessages(CodanUIMessages.class.getName(), CodanUIMessages.class); diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.properties b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.properties index 414ab1e20e3..b00af0adff5 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.properties +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.properties @@ -9,6 +9,7 @@ # Alena Laskavaia - initial API and implementation # IBM Corporation # Sergey Prigogin (Google) +# Alex Ruiz (Google) ############################################################################### BuildPropertyPage_Description=Set launch method for checkers, you can override this by editing individual problem settings BuildPropertyPage_RunAsYouType=Run as you &type (selected checkers) @@ -96,4 +97,5 @@ LaunchModesPropertyPage_RunAsYouType=Run as you type LaunchModesPropertyPage_RunOnDemand=Run on demand LaunchModesPropertyPage_RunOnFullBuild=Run on full build LaunchModesPropertyPage_RunOnIncrementalBuild=Run on incremental build -LaunchModesPropertyPage_RunOnFileSave=Run on file save or open +LaunchModesPropertyPage_RunOnFileSave=Run on file save +LaunchModesPropertyPage_RunOnFileOpen=Run on file open diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/LaunchModesPropertyPage.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/LaunchModesPropertyPage.java index 733f7c191c7..2c3e929e4b1 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/LaunchModesPropertyPage.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/LaunchModesPropertyPage.java @@ -63,6 +63,7 @@ public class LaunchModesPropertyPage extends FieldEditorPreferencePage { addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_ON_FULL_BUILD.name(), CodanUIMessages.LaunchModesPropertyPage_RunOnFullBuild, getFieldEditorParent())); addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_ON_INC_BUILD.name(), CodanUIMessages.LaunchModesPropertyPage_RunOnIncrementalBuild, getFieldEditorParent())); addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_ON_DEMAND.name(), CodanUIMessages.LaunchModesPropertyPage_RunOnDemand, getFieldEditorParent())); + addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_ON_FILE_OPEN.name(), CodanUIMessages.LaunchModesPropertyPage_RunOnFileOpen, getFieldEditorParent())); addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_ON_FILE_SAVE.name(), CodanUIMessages.LaunchModesPropertyPage_RunOnFileSave, getFieldEditorParent())); if (runInEditor) { addField(new BooleanFieldEditor(CheckerLaunchMode.RUN_AS_YOU_TYPE.name(), CodanUIMessages.LaunchModesPropertyPage_RunAsYouType, getFieldEditorParent())); |