Xtext:创建" JavaDoc"评论@annotations

时间:2016-09-26 06:51:59

标签: parameters documentation comments javadoc xtext

我使用MultiLineCommentDocumentationProvider为实体提供类似JavaDoc的注释(使用/ ** * /)。

但是,如果我对某些参数使用@(注释),它就不会像Java一样变粗,并且在鼠标悬停时甚至不会破坏该行。

有没有办法可以使用extend Xtext的MultiLineCommentDocumentationProvider来支持上述内容?

实施例

/** some description 
@myParam param description */
someEntity(Param myParam) {..}

当鼠标悬停在someEntity上时(或者在某些引用上),看起来应该是这样的:

一些描述

myParam:参数说明

而不是(目前看起来像):

一些描述@myparam param description

提前致谢。

2 个答案:

答案 0 :(得分:1)

这不是MultiLineCommentDocumentationProvider的默认功能。你可以使用XbaseHoverDocumentationProvider / XbaseHoverProvider或至少让你激发灵感。

答案 1 :(得分:0)

根据克里斯蒂安的建议,我改变了MyDSLMultiLineCommentDocumentationProvider'这样:

    @Override
    public String getDocumentation(EObject o) {
        String returnValue = findComment(o);
        String returnValueWithAnnotations = getAnnotatedDocumentation(returnValue);
        return getTextFromMultilineComment(returnValueWithAnnotations);
    }

    private String getAnnotatedDocumentation(String returnValue) {
      boolean isFirstAnnotationFound = false;
      StringBuilder result = new StringBuilder("");
    String[] splitted = returnValue.trim().split(" +");
    for (int i = 0; i < splitted.length; i++)
    {
      if (splitted[i].charAt(0) == '@')
      {
        if (! isFirstAnnotationFound)
        {
          result.append("<br><b>Parameters:</b>");
          isFirstAnnotationFound = true;
        }
        result.append("<br>"); //new line
        result.append("<b>"); //bold
        result.append(splitted[i].substring(1) + " "); // do not include "@"
        result.append("</b>");
      }
      else
      {
        result.append(splitted[i] + " ");
      }
    }
    String resultString = result.toString();
    return resultString.substring(0, resultString.length()-1); // getting rid of the strange "/" in the end
  }