编辑Eclipse Javadoc $ {tags}变量

时间:2015-12-15 13:17:52

标签: java eclipse javadoc

版本:Luna Service Release 2(4.4.2)

我通常使用&#34; / **&#34;在我的方法上插入Javadoc的方法。 Eclipse为所有args插入@param,为所有throwable插入@throws,并为@return插入@return。但是/** * * @param criteria * @param filters * @return */ protected static String getColumnNameFromCriteria(SelectedCriteria criteria, List<SelectionFilter> filters) 永远不会附加一个类型。它看起来像这样:

${tags}

第一个问题是:Eclipse中是否有一个开关,以便在添加Javadoc时自动插入方法返回类型?

我找不到一个,所以我查了一下:preferences-&gt; java-&gt;代码样式 - &gt;代码模板 - &gt;方法

在该模板上,我看到变量${tags}。该变量是生成上面显示的Javadoc的变量。

第二个问题是:有没有办法可以修改${return_type}以包含由${tags}生成的@return附加的变量/**<enter>

我希望能够键入/** * * @param criteria * @param filters * @return String */ protected static String getColumnNameFromCriteria(SelectedCriteria criteria, List<SelectionFilter> filters) 并让Eclipse自动创建以下Javadoc:

uibButtonConfig

3 个答案:

答案 0 :(得分:2)

你试过jautodoc插件吗?看看它可能会帮助你。比在alt-shift-j中构建的eclipse更好。

http://jautodoc.sourceforge.net/

答案 1 :(得分:1)

根据您的问题,Eclipse(尚)中没有允许您修改此配置的配置。这是因为javadoc中的注释必须抱怨自动生成类javadoc HTML的工具。如果允许一个人更改它,javadoc工具也应该有一个配置来理解这些修改。

您不必担心,因为此标记@return是针对javadoc生成的。一旦生成项目javadoc,您将看到每个方法都将具有返回类型(在生成的html中)。该标记用于方法结果的特定描述。

采用这种方法:

/**
 * This is an example of a documentation of a method with a return type.
 * Note that there isn't a type on the `@return` tag
 * 
 * @return the someAttribute
 */
public String getSomeAttribute() {
    return someAttribute;
}

在Eclipse中,当你在这个方法上停止鼠标指针时,它会显示: enter image description here

注意图像上文档的第一行。它说:String Foo.getSomeAttribute()

当您通过javadoc工具或其他工具(例如Maven)生成Javadoc时,它将生成包含所有类的javadoc的所有HTML文件,而Method摘要将类似于此{{3} }) String class

您可以在“修改器和类型”列中看到方法的返回类型。如果您查看其中一种方法的源代码(例如图像charAt(int index)中的第一种方法),您会发现@return标记中没有类型。

/**
 * Returns the <code>char</code> value at the
 * specified index. An index ranges from <code>0</code> to
 * <code>length() - 1</code>. The first <code>char</code> value of the sequence
 * is at index <code>0</code>, the next at index <code>1</code>,
 * and so on, as for array indexing.
 *
 * <p>If the <code>char</code> value specified by the index is a
 * <a href="Character.html#unicode">surrogate</a>, the surrogate
 * value is returned.
 *
 * @param      index   the index of the <code>char</code> value.
 * @return     the <code>char</code> value at the specified index of this string.
 *             The first <code>char</code> value is at index <code>0</code>.
 * @exception  IndexOutOfBoundsException  if the <code>index</code>
 *             argument is negative or not less than the length of this
 *             string.
 */
public char charAt(int index) {
    if ((index < 0) || (index >= value.length)) {
        throw new StringIndexOutOfBoundsException(index);
    }
    return value[index];
}

我希望它能帮助你理解这个标签。

答案 2 :(得分:1)

${tags}变量在Eclipse中似乎不可编辑。在完成一些代码之后,这里有link到负责解析变量的类。特别是insertTag方法:

private static void insertTag(IDocument textBuffer, int offset, int length, String[] paramNames, String[] exceptionNames, String returnType, String[] typeParameterNames, boolean isDeprecated,
        String lineDelimiter) throws BadLocationException {
    IRegion region= textBuffer.getLineInformationOfOffset(offset);
    if (region == null) {
        return;
    }
    String lineStart= textBuffer.get(region.getOffset(), offset - region.getOffset());

    StringBuffer buf= new StringBuffer();
    for (int i= 0; i < typeParameterNames.length; i++) {
        if (buf.length() > 0) {
            buf.append(lineDelimiter).append(lineStart);
        }
        buf.append("@param <").append(typeParameterNames[i]).append('>'); //$NON-NLS-1$
    }
    for (int i= 0; i < paramNames.length; i++) {
        if (buf.length() > 0) {
            buf.append(lineDelimiter).append(lineStart);
        }
        buf.append("@param ").append(paramNames[i]); //$NON-NLS-1$
    }
    if (returnType != null && !returnType.equals("void")) { //$NON-NLS-1$
        if (buf.length() > 0) {
            buf.append(lineDelimiter).append(lineStart);
        }
        buf.append("@return"); //$NON-NLS-1$
    }
    if (exceptionNames != null) {
        for (int i= 0; i < exceptionNames.length; i++) {
            if (buf.length() > 0) {
                buf.append(lineDelimiter).append(lineStart);
            }
            buf.append("@throws ").append(exceptionNames[i]); //$NON-NLS-1$
        }
    }

    ...

请注意,无法附加返回类型。仅在模板中插入@return

至少有一种非常黑客的方法。您仍然可以转到窗口 - &gt;更新模板偏好 - &gt; Java - &gt;代码风格 - &gt;代码模板 - &gt;评论,然后选择修改以编辑评论模板。然后,您可以将模板更改为:

/**
 * ${tags}
 * @return ${return_type}
 */

有关可用变量,请参阅http://help.eclipse.org/mars/topic/org.eclipse.jdt.doc.user/concepts/concept-template-variables.htm

但是这会导致添加两个@return条评论。如其他答案中所述,不需要添加返回类型,因为Javadoc生成器可以自动确定返回类型。如果您正在解析其他工具中的注释,则上述解决方法可以解决它。