mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
On rerun delete only own markers, some cleanup
This commit is contained in:
parent
14b3dc054b
commit
0784585fe4
3 changed files with 70 additions and 71 deletions
|
@ -85,8 +85,8 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void execute() {
|
protected void execute(ICConfigurationDescription cfgDescription) {
|
||||||
super.execute();
|
super.execute(cfgDescription);
|
||||||
}
|
}
|
||||||
protected boolean isExecuted() {
|
protected boolean isExecuted() {
|
||||||
return isExecuted;
|
return isExecuted;
|
||||||
|
@ -182,7 +182,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
||||||
provider.setConsoleEnabled(true);
|
provider.setConsoleEnabled(true);
|
||||||
assertEquals(true, provider.isConsoleEnabled());
|
assertEquals(true, provider.isConsoleEnabled());
|
||||||
|
|
||||||
provider.execute();
|
provider.execute(null);
|
||||||
assertEquals(true, provider.isExecuted());
|
assertEquals(true, provider.isExecuted());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
||||||
provider.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, properties);
|
provider.configureProvider(PROVIDER_ID, PROVIDER_NAME, languages, entries, properties);
|
||||||
assertEquals(false, provider.isConsoleEnabled());
|
assertEquals(false, provider.isConsoleEnabled());
|
||||||
provider.setConsoleEnabled(true);
|
provider.setConsoleEnabled(true);
|
||||||
provider.execute();
|
provider.execute(null);
|
||||||
assertEquals(true, provider.isExecuted());
|
assertEquals(true, provider.isExecuted());
|
||||||
assertFalse(provider.equals(clone0));
|
assertFalse(provider.equals(clone0));
|
||||||
|
|
||||||
|
@ -277,7 +277,7 @@ public class BuiltinSpecsDetectorTest extends BaseTestCase {
|
||||||
provider2.setSettingEntries(null, null, null, null);
|
provider2.setSettingEntries(null, null, null, null);
|
||||||
assertFalse(provider2.equals(clone));
|
assertFalse(provider2.equals(clone));
|
||||||
|
|
||||||
clone.execute();
|
clone.execute(null);
|
||||||
assertTrue(provider2.equals(clone));
|
assertTrue(provider2.equals(clone));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,13 +25,9 @@ import org.eclipse.cdt.core.ICommandLauncher;
|
||||||
import org.eclipse.cdt.core.IConsoleParser;
|
import org.eclipse.cdt.core.IConsoleParser;
|
||||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||||
import org.eclipse.cdt.core.ProblemMarkerInfo;
|
import org.eclipse.cdt.core.ProblemMarkerInfo;
|
||||||
import org.eclipse.cdt.core.index.IIndexManager;
|
|
||||||
import org.eclipse.cdt.core.language.settings.providers.ICBuildOutputParser;
|
import org.eclipse.cdt.core.language.settings.providers.ICBuildOutputParser;
|
||||||
import org.eclipse.cdt.core.language.settings.providers.ICListenerAgent;
|
import org.eclipse.cdt.core.language.settings.providers.ICListenerAgent;
|
||||||
import org.eclipse.cdt.core.language.settings.providers.IWorkingDirectoryTracker;
|
import org.eclipse.cdt.core.language.settings.providers.IWorkingDirectoryTracker;
|
||||||
import org.eclipse.cdt.core.model.CoreModel;
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
|
||||||
import org.eclipse.cdt.core.model.ICProject;
|
|
||||||
import org.eclipse.cdt.core.model.ILanguage;
|
import org.eclipse.cdt.core.model.ILanguage;
|
||||||
import org.eclipse.cdt.core.model.ILanguageDescriptor;
|
import org.eclipse.cdt.core.model.ILanguageDescriptor;
|
||||||
import org.eclipse.cdt.core.model.LanguageManager;
|
import org.eclipse.cdt.core.model.LanguageManager;
|
||||||
|
@ -75,9 +71,13 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
public static final String JOB_FAMILY_BUILTIN_SPECS_DETECTOR = "org.eclipse.cdt.make.core.scannerconfig.AbstractBuiltinSpecsDetector";
|
public static final String JOB_FAMILY_BUILTIN_SPECS_DETECTOR = "org.eclipse.cdt.make.core.scannerconfig.AbstractBuiltinSpecsDetector";
|
||||||
|
|
||||||
private static final int MONITOR_SCALE = 100;
|
private static final int MONITOR_SCALE = 100;
|
||||||
private static final int TICKS_CLEAN_MARKERS = 1;
|
private static final int TICKS_CLEAN_MARKERS = 1 * MONITOR_SCALE;
|
||||||
private static final int TICKS_RUN_FOR_ONE_LANGUAGE = 10;
|
private static final int TICKS_RUN_FOR_ONE_LANGUAGE = 10 * MONITOR_SCALE;
|
||||||
private static final int TICKS_SERIALIZATION = 1;
|
private static final int TICKS_SERIALIZATION = 1 * MONITOR_SCALE;
|
||||||
|
private static final int TICKS_OUTPUT_PARSING = 1 * MONITOR_SCALE;
|
||||||
|
private static final int TICKS_REMOVE_MARKERS = 1 * MONITOR_SCALE;
|
||||||
|
private static final int TICKS_EXECUTE_COMMAND = 1 * MONITOR_SCALE;
|
||||||
|
|
||||||
private static final String NEWLINE = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
|
private static final String NEWLINE = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
private static final String PLUGIN_CDT_MAKE_UI_ID = "org.eclipse.cdt.make.ui"; //$NON-NLS-1$
|
private static final String PLUGIN_CDT_MAKE_UI_ID = "org.eclipse.cdt.make.ui"; //$NON-NLS-1$
|
||||||
private static final String GMAKE_ERROR_PARSER_ID = "org.eclipse.cdt.core.GmakeErrorParser"; //$NON-NLS-1$
|
private static final String GMAKE_ERROR_PARSER_ID = "org.eclipse.cdt.core.GmakeErrorParser"; //$NON-NLS-1$
|
||||||
|
@ -89,6 +89,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
protected static final String SPEC_EXT_MACRO = "${EXT}"; //$NON-NLS-1$
|
protected static final String SPEC_EXT_MACRO = "${EXT}"; //$NON-NLS-1$
|
||||||
protected static final String SPEC_FILE_BASE = "spec"; //$NON-NLS-1$
|
protected static final String SPEC_FILE_BASE = "spec"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
private SDMarkerGenerator markerGenerator = new SDMarkerGenerator();
|
||||||
|
|
||||||
private String currentCommandResolved = null;
|
private String currentCommandResolved = null;
|
||||||
protected List<ICLanguageSettingEntry> detectedSettingEntries = null;
|
protected List<ICLanguageSettingEntry> detectedSettingEntries = null;
|
||||||
|
|
||||||
|
@ -105,12 +107,13 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
private BuildRunnerHelper buildRunnerHelper;
|
private BuildRunnerHelper buildRunnerHelper;
|
||||||
|
|
||||||
private class SDMarkerGenerator implements IMarkerGenerator {
|
private class SDMarkerGenerator implements IMarkerGenerator {
|
||||||
protected static final String SCANNER_DISCOVERY_PROBLEM_MARKER = MakeCorePlugin.PLUGIN_ID + ".scanner.discovery.problem"; //$NON-NLS-1$
|
// Scanner discovery markers are defined in org.eclipse.cdt.managedbuilder.core plugin.xml
|
||||||
|
protected static final String SCANNER_DISCOVERY_PROBLEM_MARKER = "org.eclipse.cdt.managedbuilder.core.scanner.discovery.problem";
|
||||||
protected static final String ATTR_PROVIDER = "provider"; //$NON-NLS-1$
|
protected static final String ATTR_PROVIDER = "provider"; //$NON-NLS-1$
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
|
public void addMarker(IResource rc, int lineNumber, String errorDesc, int severity, String errorVar) {
|
||||||
ProblemMarkerInfo info = new ProblemMarkerInfo(file, lineNumber, errorDesc, severity, errorVar);
|
ProblemMarkerInfo info = new ProblemMarkerInfo(rc, lineNumber, errorDesc, severity, errorVar);
|
||||||
addMarker(info);
|
addMarker(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +143,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
return new Status(Status.ERROR, MakeCorePlugin.getUniqueIdentifier(), "Error removing markers.", e);
|
return new Status(Status.ERROR, MakeCorePlugin.getUniqueIdentifier(), "Error removing markers.", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// add new marker
|
|
||||||
try {
|
try {
|
||||||
IMarker marker = problemMarkerInfo.file.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
|
IMarker marker = problemMarkerInfo.file.createMarker(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER);
|
||||||
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
||||||
|
@ -148,9 +150,9 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
marker.setAttribute(SDMarkerGenerator.ATTR_PROVIDER, providerId);
|
marker.setAttribute(SDMarkerGenerator.ATTR_PROVIDER, providerId);
|
||||||
|
|
||||||
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
|
if (problemMarkerInfo.file instanceof IWorkspaceRoot) {
|
||||||
marker.setAttribute(IMarker.LOCATION, "SD90 Providers, [" + providerName + "] options in Preferences");
|
marker.setAttribute(IMarker.LOCATION, "Preferences, C++/Build/Settings/Discovery, [" + providerName + "] options");
|
||||||
} else {
|
} else {
|
||||||
marker.setAttribute(IMarker.LOCATION, "SD90 Providers, [" + providerName + "] options in project properties");
|
marker.setAttribute(IMarker.LOCATION, "Project Properties, C++ Preprocessor Include.../Providers, [" + providerName + "] options");
|
||||||
}
|
}
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
return new Status(Status.ERROR, MakeCorePlugin.getUniqueIdentifier(), "Error adding markers.", e);
|
return new Status(Status.ERROR, MakeCorePlugin.getUniqueIdentifier(), "Error adding markers.", e);
|
||||||
|
@ -164,6 +166,20 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
markerJob.schedule();
|
markerJob.schedule();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteMarkers(IResource rc) {
|
||||||
|
String providerId = getId();
|
||||||
|
try {
|
||||||
|
IMarker[] markers = rc.findMarkers(SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
|
||||||
|
for (IMarker marker : markers) {
|
||||||
|
if (providerId.equals(marker.getAttribute(ATTR_PROVIDER))) {
|
||||||
|
marker.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (CoreException e) {
|
||||||
|
MakeCorePlugin.log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,8 +293,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
// AG FIXME - temporary log to remove before CDT Juno release
|
// AG FIXME - temporary log to remove before CDT Juno release
|
||||||
LanguageSettingsLogger.logInfo(getPrefixForLog() + "registerListener [" + System.identityHashCode(this) + "] " + this);
|
LanguageSettingsLogger.logInfo(getPrefixForLog() + "registerListener [" + System.identityHashCode(this) + "] " + this);
|
||||||
|
|
||||||
currentCfgDescription = cfgDescription;
|
execute(cfgDescription);
|
||||||
execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -287,7 +302,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
LanguageSettingsLogger.logInfo(getPrefixForLog() + "unregisterListener [" + System.identityHashCode(this) + "] " + this);
|
LanguageSettingsLogger.logInfo(getPrefixForLog() + "unregisterListener [" + System.identityHashCode(this) + "] " + this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void execute() {
|
protected void execute(final ICConfigurationDescription cfgDescription) {
|
||||||
if (isExecuted) {
|
if (isExecuted) {
|
||||||
// AG FIXME - temporary log to remove before CDT Juno release
|
// AG FIXME - temporary log to remove before CDT Juno release
|
||||||
// LanguageSettingsLogger.logInfo(getPrefixForLog() + "Already executed [" + System.identityHashCode(this) + "] " + this);
|
// LanguageSettingsLogger.logInfo(getPrefixForLog() + "Already executed [" + System.identityHashCode(this) + "] " + this);
|
||||||
|
@ -298,7 +313,18 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
Job job = new Job("Discover compiler's built-in language settings") {
|
Job job = new Job("Discover compiler's built-in language settings") {
|
||||||
@Override
|
@Override
|
||||||
protected IStatus run(IProgressMonitor monitor) {
|
protected IStatus run(IProgressMonitor monitor) {
|
||||||
return runForEachLanguage(currentCfgDescription, null, null, monitor);
|
IStatus status;
|
||||||
|
try {
|
||||||
|
startup(cfgDescription, null);
|
||||||
|
status = runForEachLanguage(cfgDescription, null, null, monitor);
|
||||||
|
} catch (CoreException e) {
|
||||||
|
MakeCorePlugin.log(e);
|
||||||
|
status = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e);
|
||||||
|
} finally {
|
||||||
|
shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean belongsTo(Object family) {
|
public boolean belongsTo(Object family) {
|
||||||
|
@ -342,45 +368,38 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
mappedRootURI = null;
|
mappedRootURI = null;
|
||||||
buildDirURI = null;
|
buildDirURI = null;
|
||||||
|
|
||||||
|
|
||||||
List<String> languageIds = getLanguageScope();
|
List<String> languageIds = getLanguageScope();
|
||||||
if (languageIds != null) {
|
if (languageIds != null) {
|
||||||
int totalWork = TICKS_CLEAN_MARKERS + languageIds.size()*TICKS_RUN_FOR_ONE_LANGUAGE + TICKS_SERIALIZATION;
|
monitor.beginTask("CDT Scanner Discovery", TICKS_CLEAN_MARKERS + languageIds.size()*TICKS_RUN_FOR_ONE_LANGUAGE + TICKS_SERIALIZATION);
|
||||||
monitor.beginTask("CDT Scanner Discovery", totalWork * MONITOR_SCALE);
|
|
||||||
|
|
||||||
IResource markersResource = currentProject != null ? currentProject : ResourcesPlugin.getWorkspace().getRoot();
|
IResource markersResource = currentProject != null ? currentProject : ResourcesPlugin.getWorkspace().getRoot();
|
||||||
|
|
||||||
// clear old markers
|
|
||||||
monitor.subTask("Clearing markers for " + markersResource.getFullPath());
|
monitor.subTask("Clearing markers for " + markersResource.getFullPath());
|
||||||
try {
|
markerGenerator.deleteMarkers(markersResource);
|
||||||
markersResource.deleteMarkers(SDMarkerGenerator.SCANNER_DISCOVERY_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
MakeCorePlugin.log(e);
|
|
||||||
}
|
|
||||||
if (monitor.isCanceled())
|
if (monitor.isCanceled())
|
||||||
throw new OperationCanceledException();
|
throw new OperationCanceledException();
|
||||||
|
|
||||||
monitor.worked(TICKS_CLEAN_MARKERS * MONITOR_SCALE);
|
monitor.worked(TICKS_CLEAN_MARKERS);
|
||||||
|
|
||||||
for (String languageId : languageIds) {
|
for (String languageId : languageIds) {
|
||||||
List<ICLanguageSettingEntry> oldEntries = getSettingEntries(cfgDescription, null, languageId);
|
List<ICLanguageSettingEntry> oldEntries = getSettingEntries(cfgDescription, null, languageId);
|
||||||
try {
|
try {
|
||||||
startupForLanguage(languageId);
|
startupForLanguage(languageId);
|
||||||
if (monitor.isCanceled())
|
runForLanguage(languageId, currentCommandResolved, env, workingDirectoryURI, new SubProgressMonitor(monitor, TICKS_RUN_FOR_ONE_LANGUAGE));
|
||||||
throw new OperationCanceledException();
|
|
||||||
|
|
||||||
runForLanguage(languageId, currentCommandResolved, env, workingDirectoryURI, new SubProgressMonitor(monitor, TICKS_RUN_FOR_ONE_LANGUAGE * MONITOR_SCALE));
|
|
||||||
if (monitor.isCanceled())
|
if (monitor.isCanceled())
|
||||||
throw new OperationCanceledException();
|
throw new OperationCanceledException();
|
||||||
} catch (CoreException e) {
|
} catch (Exception e) {
|
||||||
IStatus s = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e);
|
IStatus s = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error running Builtin Specs Detector", e);
|
||||||
MakeCorePlugin.log(s);
|
MakeCorePlugin.log(s);
|
||||||
status.merge(s);
|
status.merge(s);
|
||||||
} finally {
|
} finally {
|
||||||
shutdownForLanguage();
|
shutdownForLanguage();
|
||||||
}
|
}
|
||||||
|
if (!isChanged) {
|
||||||
List<ICLanguageSettingEntry> newEntries = getSettingEntries(cfgDescription, null, languageId);
|
List<ICLanguageSettingEntry> newEntries = getSettingEntries(cfgDescription, null, languageId);
|
||||||
isChanged = isChanged || newEntries != oldEntries;
|
isChanged = newEntries != oldEntries;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,26 +407,11 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
if (isChanged) { // avoids resource and settings change notifications
|
if (isChanged) { // avoids resource and settings change notifications
|
||||||
IStatus s = serializeLanguageSettings(currentCfgDescription);
|
IStatus s = serializeLanguageSettings(currentCfgDescription);
|
||||||
status.merge(s);
|
status.merge(s);
|
||||||
|
|
||||||
// AG: FIXME - rather send event that ls settings changed
|
|
||||||
if (currentCfgDescription != null) {
|
|
||||||
ICProject icProject = CoreModel.getDefault().create(currentProject);
|
|
||||||
ICElement[] tuSelection = new ICElement[] {icProject};
|
|
||||||
try {
|
|
||||||
CCorePlugin.getIndexManager().update(tuSelection, IIndexManager.UPDATE_ALL | IIndexManager.UPDATE_EXTERNAL_FILES_FOR_PROJECT);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
IStatus s2 = new Status(IStatus.ERROR, MakeCorePlugin.PLUGIN_ID, IStatus.ERROR, "Error updating CDT index", e);
|
|
||||||
MakeCorePlugin.log(s2);
|
|
||||||
status.merge(s2);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (monitor.isCanceled())
|
if (monitor.isCanceled())
|
||||||
throw new OperationCanceledException();
|
throw new OperationCanceledException();
|
||||||
|
|
||||||
monitor.worked(TICKS_SERIALIZATION * MONITOR_SCALE);
|
monitor.worked(TICKS_SERIALIZATION);
|
||||||
} catch (OperationCanceledException e) {
|
} catch (OperationCanceledException e) {
|
||||||
if (!status.isOK()) {
|
if (!status.isOK()) {
|
||||||
MakeCorePlugin.log(status);
|
MakeCorePlugin.log(status);
|
||||||
|
@ -457,9 +461,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
currentLanguageId = null;
|
currentLanguageId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: test case for this function
|
|
||||||
*/
|
|
||||||
private void runForLanguage(String languageId, String command, String[] envp, URI workingDirectoryURI, IProgressMonitor monitor) throws CoreException {
|
private void runForLanguage(String languageId, String command, String[] envp, URI workingDirectoryURI, IProgressMonitor monitor) throws CoreException {
|
||||||
buildRunnerHelper = new BuildRunnerHelper(currentProject);
|
buildRunnerHelper = new BuildRunnerHelper(currentProject);
|
||||||
|
|
||||||
|
@ -467,7 +468,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
monitor = new NullProgressMonitor();
|
monitor = new NullProgressMonitor();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
monitor.beginTask("Running scanner discovery: " + getName(), 3 * MONITOR_SCALE); //$NON-NLS-1$
|
monitor.beginTask("Running scanner discovery: " + getName(), TICKS_REMOVE_MARKERS + TICKS_EXECUTE_COMMAND + TICKS_OUTPUT_PARSING);
|
||||||
|
|
||||||
IConsole console;
|
IConsole console;
|
||||||
if (isConsoleEnabled) {
|
if (isConsoleEnabled) {
|
||||||
|
@ -478,9 +479,6 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
}
|
}
|
||||||
console.start(currentProject);
|
console.start(currentProject);
|
||||||
|
|
||||||
/////////////////////////////////////////////////
|
|
||||||
int state = ICommandLauncher.ILLEGAL_COMMAND;
|
|
||||||
|
|
||||||
IPath program = new Path("");
|
IPath program = new Path("");
|
||||||
String[] args = new String[0];
|
String[] args = new String[0];
|
||||||
String[] cmdArray = CommandLineUtil.argumentsToArray(command);
|
String[] cmdArray = CommandLineUtil.argumentsToArray(command);
|
||||||
|
@ -495,23 +493,23 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
|
||||||
ICommandLauncher launcher = new CommandLauncher();
|
ICommandLauncher launcher = new CommandLauncher();
|
||||||
launcher.setProject(currentProject);
|
launcher.setProject(currentProject);
|
||||||
|
|
||||||
// Using GMAKE_ERROR_PARSER_ID as it can handle shell error messages
|
// Using GMAKE_ERROR_PARSER_ID as it can handle generated error messages
|
||||||
ErrorParserManager epm = new ErrorParserManager(currentProject, new SDMarkerGenerator(), new String[] {GMAKE_ERROR_PARSER_ID});
|
ErrorParserManager epm = new ErrorParserManager(currentProject, markerGenerator, new String[] {GMAKE_ERROR_PARSER_ID});
|
||||||
ConsoleParserAdapter consoleParser = new ConsoleParserAdapter();
|
ConsoleParserAdapter consoleParser = new ConsoleParserAdapter();
|
||||||
consoleParser.startup(currentCfgDescription, epm);
|
consoleParser.startup(currentCfgDescription, epm);
|
||||||
List<IConsoleParser> parsers = new ArrayList<IConsoleParser>();
|
List<IConsoleParser> parsers = new ArrayList<IConsoleParser>();
|
||||||
parsers.add(consoleParser);
|
parsers.add(consoleParser);
|
||||||
|
|
||||||
buildRunnerHelper.setLaunchParameters(launcher, program, args, workingDirectoryURI, envp);
|
buildRunnerHelper.setLaunchParameters(launcher, program, args, workingDirectoryURI, envp);
|
||||||
buildRunnerHelper.prepareStreams(epm, parsers, console, new SubProgressMonitor(monitor, 1 * MONITOR_SCALE));
|
buildRunnerHelper.prepareStreams(epm, parsers, console, new SubProgressMonitor(monitor, TICKS_OUTPUT_PARSING));
|
||||||
|
|
||||||
buildRunnerHelper.removeOldMarkers(currentProject, new SubProgressMonitor(monitor, 1 * MONITOR_SCALE, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
|
buildRunnerHelper.removeOldMarkers(currentProject, new SubProgressMonitor(monitor, TICKS_REMOVE_MARKERS, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
|
||||||
|
|
||||||
buildRunnerHelper.greeting("Running scanner discovery: " + getName());
|
buildRunnerHelper.greeting("Running scanner discovery: " + getName());
|
||||||
|
|
||||||
OutputStream outStream = buildRunnerHelper.getOutputStream();
|
OutputStream outStream = buildRunnerHelper.getOutputStream();
|
||||||
OutputStream errStream = buildRunnerHelper.getErrorStream();
|
OutputStream errStream = buildRunnerHelper.getErrorStream();
|
||||||
state = runProgramForLanguage(languageId, command, envp, workingDirectoryURI, outStream, errStream, new SubProgressMonitor(monitor, 1 * MONITOR_SCALE, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
|
runProgramForLanguage(languageId, command, envp, workingDirectoryURI, outStream, errStream, new SubProgressMonitor(monitor, TICKS_EXECUTE_COMMAND, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK));
|
||||||
buildRunnerHelper.close();
|
buildRunnerHelper.close();
|
||||||
buildRunnerHelper.goodbye();
|
buildRunnerHelper.goodbye();
|
||||||
|
|
||||||
|
|
|
@ -272,42 +272,43 @@ public class BuildRunnerHelper implements Closeable {
|
||||||
try {
|
try {
|
||||||
if (stdout != null)
|
if (stdout != null)
|
||||||
stdout.close();
|
stdout.close();
|
||||||
stdout = null;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
stdout = null;
|
||||||
try {
|
try {
|
||||||
if (stderr != null)
|
if (stderr != null)
|
||||||
stderr.close();
|
stderr.close();
|
||||||
stderr = null;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
stderr = null;
|
||||||
try {
|
try {
|
||||||
if (streamProgressMonitor != null)
|
if (streamProgressMonitor != null)
|
||||||
streamProgressMonitor.close();
|
streamProgressMonitor.close();
|
||||||
streamProgressMonitor = null;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
streamProgressMonitor = null;
|
||||||
try {
|
try {
|
||||||
if (consoleOut != null)
|
if (consoleOut != null)
|
||||||
consoleOut.close();
|
consoleOut.close();
|
||||||
consoleOut = null;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
consoleOut = null;
|
||||||
try {
|
try {
|
||||||
if (consoleInfo != null)
|
if (consoleInfo != null)
|
||||||
consoleInfo.close();
|
consoleInfo.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
}
|
} finally {
|
||||||
consoleInfo = null;
|
consoleInfo = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
isStreamsOpen = false;
|
isStreamsOpen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue