Revert analyzer default enablement change

This commit is contained in:
ghidra1
2020-09-26 08:53:30 -04:00
parent edd85aac97
commit 0cdc722921
8 changed files with 16 additions and 86 deletions

View File

@@ -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());
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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;
}
}