如何为ICompilationUnit设置IMarker的亚麻布?

时间:2014-11-17 19:09:37

标签: java eclipse-plugin eclipse-jdt markers

我想在给定的亚麻布上创建一个带有消息和彩色代码行(如EclEmma)的标记。我有一个ICompilationUnit及其资源来创建这样的标记:

IMarker marker = resource.createMarker("org.epitest.mutationmarker");
marker.setAttribute(IMarker.MESSAGE, "statusDescription");
marker.setAttribute(IMarker.LINE_NUMBER, 5);
marker.setAttribute(IMarker.CHAR_START, 10);
marker.setAttribute(IMarker.CHAR_END, 20);

不幸的是,行号被忽略,标记放在第一行。

The Marker is at the first line not as expected on line 5

出了什么问题?我怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

CHAR_STARTCHAR_END是文档开头的偏移量,正在优先于LINE_NUMBER使用。如果未指定char start和end属性,则位置显示代码仅使用行号。

如果您拥有IDocument.getLineOffset(line),则可以使用IDocument获取行偏移量。

如果您使用的是文本编辑器,则可以从中获取IDocument,否则您可以构建Document类的实例。

注意:IDocument中的行号为0,IMarker中的行号为1。