Hi Anthony,
Instead of
enabling/disabling each checker separately, what we have
done in our product is disable the "autostart" of Codan as a
whole:
Preferences > General > Startup : Plugins not enabled
on startup : CODAN
We do it by
putting this into our plugin_customization.ini :
org.eclipse.ui.workbench/PLUGINS_NOT_ACTIVATED_ON_STARTUP=org.eclipse.equinox.p2.ui.sdk.scheduler;org.eclipse.update.scheduler;
org.eclipse.cdt.scripting;org.eclipse.dltk.ui;org.eclipse.php.debug.daemon;org.eclipse.cdt.codan.ui.cxx;org.tigris.subversion.subclipse.tools.usage;
This works
nicely in NEW workspaces; the only problem is that if user
has an EXISTING workspace where the respective
PLUGINS_NOT_ACTIVATED_ON_STARTUP has been set in the
workspace preferences while Codan was not yet installed (in
an earlier release), the new plugin_customization.ini is not
picked up.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=374749
Another
disadvantage is that once user does Right-click >
Validate on a project, CODAN is enabled (and remains
enabled). But since that is an explicit request to turn on
validation, it could also be seen as an advantage. Another
advantage of our approach is that IF a user DOES want to use
codan, it is a single switch to change and not all of them.
The best
solution would be fixing the bug mentioned above, ie
introducing a global CODAN on/off switch in addition to all
the individual checker switches.
Implementing
this shouldn't be rocket science...
Contributions
welcome :)
Thanks,
Martin
--
Martin Oberhuber,
SMTS / Product Architect – Development Tools, Wind River
direct
+43.662.457915.85 fax +43.662.457915.6
-----Original
Message-----
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Antony Burton
Sent: Wednesday, April 03, 2013 5:32 PM
To: CDT General developers list.
Subject: [cdt-dev] Problem Enabling/Disabling Codan checkers
programmatically (Bug?)
Hi,
We are
working on a plugin which creates a C project for ARM
processors and would like to avoid users having to delve
into preferences. So we have used the following code to
modify default code analysis preferences:
/**************
enable/disable code analysis checkers that we need or don't
need... ****************************************/
IEclipsePreferences codanp =
CodanCorePlugin.getDefault().getStorePreferences();
// get pproblem checker keys
String[] keys = null;
try {
keys = codanp.keys();
} catch (org.osgi.service.prefs.BackingStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// first disable all problem checkers...
for (int i=0; i<keys.length; i++) {
String res = codanp.get(keys[i], "");
if (!res.substring(0,1).equals("-")) {
res = "-"+res;
}
if (res.equals("-Error") || res.equals("-Warning") ||
res.equals("-Info"))
{
codanp.put(keys[i], res);
}
}
// now enable the checkers we need with either warning or
error...
codanp.put("org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem",
"Warning");
codanp.put("org.eclipse.cdt.codan.checkers.noreturn",
"Error");
codanp.put("org.eclipse.cdt.codan.checkers.errnoreturn",
"Error");
codanp.put("org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem",
"Warning");
codanp.put("org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem",
"Warning");
codanp.put("org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem",
"Warning");
//...
**************************************************************************************************************************************/
This worked
fine up until I tried it in a fresh workspace, in which case
the instruction:
IEclipsePreferences
codanp =
CodanCorePlugin.getDefault().getStorePreferences();
returns a
value which provides no keys.
In order to
get it to work I must go into code analysis preferences and
click on the "Apply" or "Ok" button.
Is this a bug
or have I forgotten something? Is there a work around to get
it to work in a new workspace?
Thanks in
advance,
Regards,
Antony
_______________________________________________
cdt-dev
mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev