diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisScheduler.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisScheduler.java index 12ab1677f1..3445ff30b0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisScheduler.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisScheduler.java @@ -15,18 +15,13 @@ */ package ghidra.app.plugin.core.analysis; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; - import ghidra.app.services.Analyzer; import ghidra.app.util.importer.MessageLog; import ghidra.framework.options.Options; -import ghidra.framework.preferences.Preferences; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.listing.Program; import ghidra.util.Msg; -import ghidra.util.SystemUtilities; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -36,6 +31,7 @@ public class AnalysisScheduler { private AddressSet removeSet; private AddressSet addSet; + private boolean defaultEnablement; private boolean enabled; private boolean scheduled; @@ -47,42 +43,23 @@ public class AnalysisScheduler { throw new IllegalArgumentException("Analyzer name may not contain a period: " + analyzer.getName()); } - boolean defaultEnable = analyzer.getDefaultEnablement(analysisMgr.getProgram()); - enabled = getEnableOverride(defaultEnable); - if (rememberEnablementChangeAsUserPreference()) { - String val = - Preferences.getProperty(getAnalyzerPreferenceName(), Boolean.toString(enabled)); - enabled = Boolean.valueOf(val); - } - else if (defaultEnable != enabled) { - Msg.warn(this, - "Analyzer \'" + analyzer.getName() + "\' for " + - analysisMgr.getProgram().getName() + " " + (enabled ? "enabled" : "disabled") + - " by PSPEC file override"); - } + defaultEnablement = getDefaultEnablement(); + enabled = defaultEnablement; removeSet = new AddressSet(); addSet = new AddressSet(); } - private boolean rememberEnablementChangeAsUserPreference() { - if (!analyzer.rememberEnablementChangeAsUserPreference()) { - return false; + private boolean getDefaultEnablement() { + Program program = analysisMgr.getProgram(); + boolean defaultEnable = analyzer.getDefaultEnablement(program); + boolean override = getEnableOverride(defaultEnable); + if (defaultEnable != override) { + Msg.warn(AnalysisScheduler.class, + "Analyzer \'" + analyzer.getName() + "\' for " + program.getName() + " " + + (override ? "enabled" : "disabled") + " by PSPEC file override"); + defaultEnable = override; } - if (SystemUtilities.isInTestingMode() || SystemUtilities.isInHeadlessMode()) { - return false; - } - return true; - } - - private String getAnalyzerPreferenceName() { - String str = analyzer.getName(); - try { - str = URLEncoder.encode(str, "UTF8"); - } - catch (UnsupportedEncodingException e) { - // ignore - } - return "Analyzers." + str; + return defaultEnable; } synchronized void schedule() { @@ -151,24 +128,14 @@ public class AnalysisScheduler { } public void optionsChanged(Options options) { - - boolean defaultEnable = analyzer.getDefaultEnablement(analysisMgr.getProgram()); - defaultEnable = getEnableOverride(defaultEnable); - - boolean state = options.getBoolean(analyzer.getName(), defaultEnable); - if (state != enabled && rememberEnablementChangeAsUserPreference()) { - Preferences.setProperty(getAnalyzerPreferenceName(), Boolean.toString(state)); - } - enabled = state; - + enabled = options.getBoolean(analyzer.getName(), defaultEnablement); analyzer.optionsChanged(options.getOptions(analyzer.getName()), analysisMgr.getProgram()); } public void registerOptions(Options options) { Options analyzerOptions = options.getOptions(analyzer.getName()); - options.registerOption(analyzer.getName(), - enabled, null, analyzer.getDescription()); - + options.registerOption(analyzer.getName(), defaultEnablement, null, + analyzer.getDescription()); analyzer.registerOptions(analyzerOptions, analysisMgr.getProgram()); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/StackVariableAnalyzer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/StackVariableAnalyzer.java index f6863054f5..f5e46fb4c8 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/StackVariableAnalyzer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/StackVariableAnalyzer.java @@ -41,11 +41,6 @@ public class StackVariableAnalyzer extends AbstractAnalyzer { setSupportsOneTimeAnalysis(); } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return true; - } - @Override public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) { BackgroundCommand cmd; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/services/AbstractAnalyzer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/services/AbstractAnalyzer.java index 30a8e3a2d4..790e96333c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/services/AbstractAnalyzer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/services/AbstractAnalyzer.java @@ -72,11 +72,6 @@ public abstract class AbstractAnalyzer implements Analyzer { return defaultEnablement; } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return false; - } - @Override public final boolean supportsOneTimeAnalysis() { return supportsOneTimeAnalysis; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/services/Analyzer.java b/Ghidra/Features/Base/src/main/java/ghidra/app/services/Analyzer.java index dcb6a3647c..a47e5fbd83 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/services/Analyzer.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/services/Analyzer.java @@ -131,13 +131,4 @@ public interface Analyzer extends ExtensionPoint { */ public boolean isPrototype(); - /** - * Returns true if a change to the analyzer enablement should be saved as a user preference - * so that it may be establish the default enablement for analysis in other programs. - * NOTE: This feature is ignored while operating in test mode or headless mode where - * it is expected that explicit enablement/disablement will be utilized. - * @return true if an enablement change should be remembered as the new default - */ - public boolean rememberEnablementChangeAsUserPreference(); - } diff --git a/Ghidra/Features/FileFormats/src/main/java/ghidra/file/analyzers/FileFormatAnalyzer.java b/Ghidra/Features/FileFormats/src/main/java/ghidra/file/analyzers/FileFormatAnalyzer.java index c033b0b7c7..1c9237717c 100644 --- a/Ghidra/Features/FileFormats/src/main/java/ghidra/file/analyzers/FileFormatAnalyzer.java +++ b/Ghidra/Features/FileFormats/src/main/java/ghidra/file/analyzers/FileFormatAnalyzer.java @@ -229,8 +229,4 @@ public abstract class FileFormatAnalyzer implements Analyzer { return program.getMemory().findBytes(start, values, null, true, monitor); } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return false; - } } diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java index 63e76644e4..51b5f36323 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbAnalyzer.java @@ -63,11 +63,6 @@ public class PdbAnalyzer extends AbstractAnalyzer { setSupportsOneTimeAnalysis(); } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return true; - } - @Override public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) { diff --git a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java index c8ada5106c..0b6c2e8ce9 100644 --- a/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java +++ b/Ghidra/Features/PDB/src/main/java/ghidra/app/plugin/core/analysis/PdbUniversalAnalyzer.java @@ -233,11 +233,6 @@ public class PdbUniversalAnalyzer extends AbstractAnalyzer { pdbApplicatorOptions = new PdbApplicatorOptions(); } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return true; - } - @Override public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) throws CancelledException { diff --git a/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/analyzers/AbstractJavaAnalyzer.java b/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/analyzers/AbstractJavaAnalyzer.java index 69c9d00f04..734281bff5 100644 --- a/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/analyzers/AbstractJavaAnalyzer.java +++ b/Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/analyzers/AbstractJavaAnalyzer.java @@ -222,8 +222,4 @@ public abstract class AbstractJavaAnalyzer implements Analyzer { return program.getMemory().findBytes(start, values, null, true, monitor); } - @Override - public boolean rememberEnablementChangeAsUserPreference() { - return false; - } }