|
From: <caw...@us...> - 2007-03-16 13:19:43
|
Revision: 2185
http://svn.sourceforge.net/rubyeclipse/?rev=2185&view=rev
Author: cawilliams
Date: 2007-03-16 06:19:35 -0700 (Fri, 16 Mar 2007)
Log Message:
-----------
start moving us towards categorized problems that contain a unique id - useful for quick fixes.
Also, change the IMarkerManager API, it should really just take an IResource and an IProblem, otherwise we drop useful info contained in the IProblem in some cases by decosnturcting it and then reconstructing without the ID for example.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/compiler/IProblem.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/CodeDuplicationDetector.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/IMarkerManager.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/MarkerManager.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/ProblemRequestorMarkerManager.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/DefaultProblem.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Error.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/ImmediateWarnings.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/MarkerUtility.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/TaskTag.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Warning.java
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java
trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/ShamMarkerManager.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/compiler/IProblem.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/compiler/IProblem.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/core/compiler/IProblem.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -60,6 +60,14 @@
*/
int IgnoreCategoriesMask = 0xFFFFFF;
+ int UndocumentedEmptyBlock = Internal + 460;
+ int UnusedPrivateField = Internal + FieldRelated + 77;
+ int LocalVariableIsNeverUsed = Internal + 61;
+ int ArgumentIsNeverUsed = Internal + 62;
+ int UnusedPrivateMethod = Internal + MethodRelated + 118;
+
+ int Task = Internal + 450;
+
/**
* Returns the problem id
*
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/CodeDuplicationDetector.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/CodeDuplicationDetector.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/CodeDuplicationDetector.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -9,6 +9,8 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.rubypeople.rdt.core.RubyCore;
+import org.rubypeople.rdt.internal.core.parser.RdtPosition;
+import org.rubypeople.rdt.internal.core.parser.Warning;
import org.rubypeople.rdt.internal.core.pmd.CPD;
import org.rubypeople.rdt.internal.core.pmd.Match;
import org.rubypeople.rdt.internal.core.pmd.TokenEntry;
@@ -42,7 +44,8 @@
TokenEntry mark = (TokenEntry) occurrences.next();
// FIXME Make TokenEntry hold an IFile pointer to source file?
IFile file = RubyCore.getWorkspace().getRoot().getFileForLocation(Path.fromOSString(mark.getTokenSrcID()));
- markerManager.addWarning(file, message.toString(), mark.getBeginLine(), mark.getStartOffset(), mark.getStartOffset() + match.getSourceCodeSlice().length());
+ Warning warning = new Warning(new RdtPosition(mark.getBeginLine(), mark.getStartOffset(), mark.getStartOffset() + match.getSourceCodeSlice().length()), message.toString());
+ markerManager.addProblem(file, warning);
}
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/IMarkerManager.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/IMarkerManager.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/IMarkerManager.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -17,13 +17,26 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.jruby.lexer.yacc.SyntaxException;
+import org.rubypeople.rdt.core.compiler.IProblem;
+import org.rubypeople.rdt.internal.core.parser.TaskTag;
public interface IMarkerManager {
- public void removeProblemsAndTasksFor(IResource resource);
+
+ public void removeProblemsAndTasksFor(IResource resource);
+
+ /**
+ * @deprecated Use addProblem
+ * @param file
+ * @param e
+ */
public void createSyntaxError(IFile file, SyntaxException e);
- public void createError(IFile file, String message, int startLine, int startOffset, int endOffset);
- public void createTasks(IFile file, List tasks) throws CoreException;
- public void addWarning(IFile file, String message);
- public void addWarning(IFile file, String message, int startLine, int startOffset, int endOffset);
+ /**
+ * @param file
+ * @param tasks
+ * @throws CoreException
+ */
+ public void createTasks(IFile file, List<TaskTag> tasks) throws CoreException;
+
+ public void addProblem(IFile file, IProblem problem);
}
\ No newline at end of file
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/MarkerManager.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/MarkerManager.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/MarkerManager.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -17,10 +17,9 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.jruby.lexer.yacc.SyntaxException;
-import org.rubypeople.rdt.internal.core.parser.Error;
+import org.rubypeople.rdt.core.compiler.IProblem;
import org.rubypeople.rdt.internal.core.parser.MarkerUtility;
-import org.rubypeople.rdt.internal.core.parser.RdtPosition;
-import org.rubypeople.rdt.internal.core.parser.Warning;
+import org.rubypeople.rdt.internal.core.parser.TaskTag;
class MarkerManager implements IMarkerManager {
@@ -32,21 +31,12 @@
MarkerUtility.createSyntaxError(file, e);
}
- public void createTasks(IFile file, List tasks) throws CoreException {
+ public void createTasks(IFile file, List<TaskTag> tasks) throws CoreException {
MarkerUtility.createTasks(file, tasks);
}
-
- public void addWarning(IFile file, String message) {
- addWarning(file,message, 1, 0, 0);
- }
-
- public void addWarning(IFile file, String message, int startLine, int startOffset, int endOffset) {
- MarkerUtility.createProblemMarker(file, new Warning(new RdtPosition(startLine, startOffset, endOffset), message));
- }
-
- public void createError(IFile file, String message, int startLine, int startOffset, int endOffset) {
- MarkerUtility.createProblemMarker(file, new Error(new RdtPosition(startLine, startOffset, endOffset), message));
-
+
+ public void addProblem(IFile file, IProblem problem) {
+ MarkerUtility.createProblemMarker(file, problem);
}
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/ProblemRequestorMarkerManager.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/ProblemRequestorMarkerManager.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/builder/ProblemRequestorMarkerManager.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -26,16 +26,10 @@
public void acceptProblem(IProblem problem) {
// TODO Use active flag by calling begin and end reporting
// if (!isActive()) return;
- if (problem.isWarning()) {
- markerManager.addWarning(file, problem.getMessage(), problem.getSourceLineNumber(), problem.getSourceStart(), problem.getSourceEnd());
+ if (problem.isWarning() || problem.isError()) {
+ markerManager.addProblem(file, problem);
return;
}
- if (problem.isError()) {
- markerManager.createError(file, problem.getMessage(),
- problem.getSourceLineNumber(), problem
- .getSourceStart(), problem.getSourceEnd());
- return;
- }
if (problem.isTask()) {
List tasks = new ArrayList();
TaskTag task = (TaskTag) problem;
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/DefaultProblem.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/DefaultProblem.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/DefaultProblem.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -5,7 +5,6 @@
import org.jruby.lexer.yacc.ISourcePosition;
import org.rubypeople.rdt.core.compiler.CategorizedProblem;
-import org.rubypeople.rdt.core.compiler.IProblem;
/**
* @author Chris
@@ -23,11 +22,12 @@
/**
* @param position
* @param message
+ * @param problemID
*/
- public DefaultProblem(ISourcePosition position, String message) {
+ public DefaultProblem(ISourcePosition position, String message, int problemID) {
this.position = position;
this.message = message;
- id = IProblem.Uncategorized;
+ id = problemID;
}
/**
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Error.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Error.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Error.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -13,9 +13,13 @@
public class Error extends DefaultProblem {
public Error(ISourcePosition position, String message) {
- super(position, message);
+ this(position, message, -1);
}
+ public Error(ISourcePosition position, String message, int problemID) {
+ super(position, message, problemID);
+ }
+
public boolean isError() {
return true;
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/ImmediateWarnings.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/ImmediateWarnings.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/ImmediateWarnings.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -25,11 +25,12 @@
if (message.startsWith("Useless")) {
return ;
}
- markerManager.addWarning(file, message, position.getStartLine(), position.getStartOffset(), position.getEndOffset());
+ Warning warning = new Warning(position, message);
+ markerManager.addProblem(file, warning);
}
public void warn(String message) {
- markerManager.addWarning(file, message);
+ warning(message);
}
public boolean isVerbose() {
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/MarkerUtility.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/MarkerUtility.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/MarkerUtility.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -40,6 +40,7 @@
map.put(IMarker.LINE_NUMBER, new Integer(pos.getStartLine()));
map.put(IMarker.CHAR_START, new Integer(pos.getStartOffset()));
map.put(IMarker.CHAR_END, new Integer(pos.getEndOffset()));
+ map.put(IRubyModelMarker.ID, IProblem.Syntax);
marker.setAttributes(map);
} catch (CoreException e) {
RubyCore.log(e);
@@ -81,13 +82,14 @@
map.put(IMarker.LINE_NUMBER, new Integer(problem.getSourceLineNumber()));
map.put(IMarker.CHAR_START, new Integer(problem.getSourceStart()));
map.put(IMarker.CHAR_END, new Integer(problem.getSourceEnd()));
+ map.put(IRubyModelMarker.ID, problem.getID());
marker.setAttributes(map);
} catch (CoreException e) {
RubyCore.log(e);
}
}
- public static void createTasks(IResource underlyingResource, List tasks) throws CoreException {
+ public static void createTasks(IResource underlyingResource, List<TaskTag> tasks) throws CoreException {
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
createTask(underlyingResource, (TaskTag) iter.next());
}
@@ -112,6 +114,7 @@
map.put(IMarker.TRANSIENT, new Boolean(false));
map.put(IMarker.CHAR_START, new Integer(task.getSourceStart()));
map.put(IMarker.CHAR_END, new Integer(task.getSourceEnd()));
+ map.put(IRubyModelMarker.ID, task.getID());
marker = resource.createMarker(IRubyModelMarker.TASK_MARKER);
marker.setAttributes(map);
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/TaskTag.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/TaskTag.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/TaskTag.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -14,7 +14,7 @@
private int priority;
public TaskTag(String message, int priority, int lineNumber, int start, int end) {
- super(new RdtPosition(lineNumber, start, end), message);
+ super(new RdtPosition(lineNumber, start, end), message, IProblem.Task);
this.priority = priority;
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Warning.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Warning.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/Warning.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -13,9 +13,13 @@
public class Warning extends DefaultProblem {
public Warning(ISourcePosition position, String message) {
- super(position, message);
+ this(position, message, -1);
}
+ public Warning(ISourcePosition position, String message, int problemID) {
+ super(position, message, problemID);
+ }
+
public boolean isWarning() {
return true;
}
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/parser/warnings/RubyLintVisitor.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -31,9 +31,9 @@
return;
IProblem problem;
if (value != null && value.equals(RubyCore.ERROR))
- problem = new Error(position, message);
+ problem = new Error(position, message, getProblemID());
else
- problem = new Warning(position, message);
+ problem = new Warning(position, message, getProblemID());
problemRequestor.acceptProblem(problem);
}
@@ -48,4 +48,8 @@
*/
abstract protected String getOptionKey();
+ protected int getProblemID() {
+ return IProblem.Uncategorized;
+ }
+
}
Modified: trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/ShamMarkerManager.java
===================================================================
--- trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/ShamMarkerManager.java 2007-03-16 12:23:45 UTC (rev 2184)
+++ trunk/org.rubypeople.rdt.core.tests/src/org/rubypeople/rdt/internal/core/builder/ShamMarkerManager.java 2007-03-16 13:19:35 UTC (rev 2185)
@@ -14,7 +14,9 @@
import org.jruby.lexer.yacc.ISourcePosition;
import org.jruby.lexer.yacc.SyntaxException;
import org.rubypeople.eclipse.shams.resources.ShamFile;
+import org.rubypeople.rdt.core.compiler.IProblem;
import org.rubypeople.rdt.internal.core.parser.RdtPosition;
+import org.rubypeople.rdt.internal.core.parser.TaskTag;
import org.rubypeople.rdt.internal.core.util.ListUtil;
public class ShamMarkerManager implements IMarkerManager {
@@ -51,7 +53,7 @@
Assert.assertEquals("syntaxException", expectedSyntaxException, syntaxExceptionArg);
}
- public void createTasks(IFile file, List tasks) throws CoreException {
+ public void createTasks(IFile file, List<TaskTag> tasks) throws CoreException {
fileArg = file;
tasksArg = tasks;
}
@@ -94,5 +96,11 @@
syntaxExceptionArg = e;
}
-
+ public void addProblem(IFile file, IProblem problem) {
+ fileArg = file;
+ messageArg = problem.getMessage();
+ lineArg = problem.getSourceLineNumber();
+ startOffsetArg = problem.getSourceStart();
+ endOffsetArg = problem.getSourceEnd();
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|