mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 352166: ErrorParserManager does not have an API for adding markers
This commit is contained in:
parent
7d03274d32
commit
e34011c34b
3 changed files with 117 additions and 15 deletions
|
@ -564,9 +564,18 @@ outer:
|
||||||
*/
|
*/
|
||||||
public void generateExternalMarker(IResource file, int lineNumber, String desc, int severity, String varName, IPath externalPath) {
|
public void generateExternalMarker(IResource file, int lineNumber, String desc, int severity, String varName, IPath externalPath) {
|
||||||
ProblemMarkerInfo problemMarkerInfo = new ProblemMarkerInfo(file, lineNumber, desc, severity, varName, externalPath);
|
ProblemMarkerInfo problemMarkerInfo = new ProblemMarkerInfo(file, lineNumber, desc, severity, varName, externalPath);
|
||||||
|
this.addProblemMarker(problemMarkerInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the given marker to the list of error markers.
|
||||||
|
* @param problemMarkerInfo - The marker to be added.
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public void addProblemMarker(ProblemMarkerInfo problemMarkerInfo){
|
||||||
fErrors.add(problemMarkerInfo);
|
fErrors.add(problemMarkerInfo);
|
||||||
fMarkerGenerator.addMarker(problemMarkerInfo);
|
fMarkerGenerator.addMarker(problemMarkerInfo);
|
||||||
if (severity == IMarkerGenerator.SEVERITY_ERROR_RESOURCE)
|
if (problemMarkerInfo.severity == IMarkerGenerator.SEVERITY_ERROR_RESOURCE)
|
||||||
hasErrors = true;
|
hasErrors = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006, 2009 Siemens AG.
|
* Copyright (c) 2006, 2009, 2011 Siemens AG and others.
|
||||||
* All rights reserved. This content and the accompanying materials
|
* All rights reserved. This content and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -7,14 +7,26 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Norbert Ploett - Initial implementation
|
* Norbert Ploett - Initial implementation
|
||||||
|
* Sami Wagiaalla (Red Hat) - Bug 352166: Added attributes and type API
|
||||||
|
* and improved documentation.
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.core;
|
package org.eclipse.cdt.core;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.resources.ACBuilder;
|
||||||
|
import org.eclipse.core.resources.IMarker;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* {@link ProblemMarkerInfo} is an object used to pass error properties to {@link ErrorParserManager}.
|
||||||
|
* @see ErrorParserManager#addProblemMarker(ProblemMarkerInfo) and
|
||||||
|
* @see ErrorParserManager#generateMarker(IResource, int, String, int, String) and
|
||||||
|
* @see ErrorParserManager#generateExternalMarker(IResource, int, String, int, String, IPath)
|
||||||
|
* The information stored in this object will later be used to create an {@link IMarker} by {@link ACBuilder}
|
||||||
* @noextend This class is not intended to be subclassed by clients.
|
* @noextend This class is not intended to be subclassed by clients.
|
||||||
*/
|
*/
|
||||||
public class ProblemMarkerInfo {
|
public class ProblemMarkerInfo {
|
||||||
|
@ -25,25 +37,93 @@ public class ProblemMarkerInfo {
|
||||||
public int severity;
|
public int severity;
|
||||||
public String variableName;
|
public String variableName;
|
||||||
public IPath externalPath ;
|
public IPath externalPath ;
|
||||||
|
private Map<String, String> attributes;
|
||||||
|
private String type;
|
||||||
|
|
||||||
public ProblemMarkerInfo(IResource file, int lineNumber, String desciption, int severity, String variableName) {
|
/**
|
||||||
this.file = file;
|
* Create a new {@link ProblemMarkerInfo} object.
|
||||||
this.lineNumber = lineNumber;
|
* @param file - the file where the problem has occurred.
|
||||||
this.description = desciption;
|
* @param lineNumber - the line number of the problem.
|
||||||
this.severity = severity;
|
* @param description - a description of the problem.
|
||||||
this.variableName = variableName;
|
* @param severity - the severity of the problem @see {@link IMarkerGenerator}
|
||||||
this.externalPath = null ;
|
* for acceptable severity values
|
||||||
}
|
* @param variableName - the name of the variable involved in the error if any.
|
||||||
|
*/
|
||||||
|
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName) {
|
||||||
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName, IPath externalPath) {
|
|
||||||
super();
|
|
||||||
this.file = file;
|
this.file = file;
|
||||||
this.lineNumber = lineNumber;
|
this.lineNumber = lineNumber;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.severity = severity;
|
this.severity = severity;
|
||||||
this.variableName = variableName;
|
this.variableName = variableName;
|
||||||
|
this.externalPath = null ;
|
||||||
|
this.type = null;
|
||||||
|
this.attributes = new HashMap<String, String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new {@link ProblemMarkerInfo} object.
|
||||||
|
* @param file - the file where the problem has occurred.
|
||||||
|
* @param lineNumber - the line number of the problem.
|
||||||
|
* @param description - a description of the problem.
|
||||||
|
* @param severity - the severity of the problem @see {@link IMarkerGenerator}
|
||||||
|
* for acceptable severity values
|
||||||
|
* @param variableName - the name of the variable involved in the error if any.
|
||||||
|
* @param externalPath - if this error involves a file outside the workspace this parameter should
|
||||||
|
* contain the path to that file.
|
||||||
|
*/
|
||||||
|
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName, IPath externalPath) {
|
||||||
|
this(file, lineNumber, description, severity, variableName);
|
||||||
this.externalPath = externalPath;
|
this.externalPath = externalPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attribute map.
|
||||||
|
* @return Map of attributes and their values.
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public Map<String, String> getAttributes(){
|
||||||
|
return this.attributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the value of the attribute with the given key,
|
||||||
|
* or null if no such attribute exists.
|
||||||
|
* @param key - attribute key.
|
||||||
|
* @return attribute value
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public String getAttribute (String key){
|
||||||
|
return this.attributes.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the value of the attribute with the given key
|
||||||
|
* to the given value, or add one if one does not already
|
||||||
|
* exist.
|
||||||
|
* @param key - attribute key.
|
||||||
|
* @param value - new attribute value.
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public void setAttribute (String key, String value){
|
||||||
|
this.attributes.put(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the type of this problem marker or null
|
||||||
|
* if type was not set.
|
||||||
|
* @return the type.
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public String getType() {
|
||||||
|
return this.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the type of this problem marker.
|
||||||
|
* @param type - the new type.
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public void setType(String type){
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -15,6 +15,7 @@ package org.eclipse.cdt.core.resources;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
import org.eclipse.cdt.core.CCorePreferenceConstants;
|
||||||
|
@ -85,7 +86,11 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IMarker marker = markerResource.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
|
String type = problemMarkerInfo.getType();
|
||||||
|
if (type == null)
|
||||||
|
type = ICModelMarker.C_MODEL_PROBLEM_MARKER;
|
||||||
|
|
||||||
|
IMarker marker = markerResource.createMarker(type);
|
||||||
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
marker.setAttribute(IMarker.MESSAGE, problemMarkerInfo.description);
|
||||||
marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(problemMarkerInfo.severity));
|
marker.setAttribute(IMarker.SEVERITY, mapMarkerSeverity(problemMarkerInfo.severity));
|
||||||
marker.setAttribute(IMarker.LINE_NUMBER, problemMarkerInfo.lineNumber);
|
marker.setAttribute(IMarker.LINE_NUMBER, problemMarkerInfo.lineNumber);
|
||||||
|
@ -105,6 +110,14 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
|
||||||
} else if (problemMarkerInfo.lineNumber==0){
|
} else if (problemMarkerInfo.lineNumber==0){
|
||||||
marker.setAttribute(IMarker.LOCATION, " "); //$NON-NLS-1$
|
marker.setAttribute(IMarker.LOCATION, " "); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add all other client defined attributes.
|
||||||
|
Map<String, String> attributes = problemMarkerInfo.getAttributes();
|
||||||
|
if (attributes != null){
|
||||||
|
for (Entry<String, String> entry : attributes.entrySet()) {
|
||||||
|
marker.setAttribute(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (CoreException e) {
|
catch (CoreException e) {
|
||||||
CCorePlugin.log(e.getStatus());
|
CCorePlugin.log(e.getStatus());
|
||||||
|
|
Loading…
Add table
Reference in a new issue