- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试配置 JAutodoc,以便生成仅包含 @returns
标记的 getter 注释,如下所示:
/**
* @returns The non-null {@linkplain Foo foo} of this {@link IBar}.
*/
public Foo getFoo();
我已经配置了我的 getter 模板来生成这个:
但是,我的一般 JAutodoc 设置一定有问题,因为我得到的是我的模板和从方法名称解析的注释的混合体:
/**
* Get foo.
* @returns The non-null {@linkplain Foo foo} of this {@link IBar}.
*/
public Foo getFoo();
这些是我的设置:
我已从替换列表中删除“获取”替换,并取消选中“来自字段评论的字母”设置,如 this discussion 中的建议, 但它并没有产生明显的差异。我还尝试取消选中“从元素名称创建注释”设置,尽管我的示例 getter 是接口(interface)的一部分(在这种情况下没有元素可以从中获取注释),但 JAutodoc 没有似乎并不关心这一点。
我还尝试在进行这些更改后重新启动 Eclipse,以防万一。到目前为止,没有任何效果。 getter 的注释行为几乎看起来像是硬编码的。有人可以解释一下吗?
最佳答案
JAutodoc,以其目前的形式,不能做你想让它做的事。这是因为您要求的 Javadoc 不完整。
(这很有趣,我希望你能欣赏你的努力:-)
在这种情况下,您要求 JAutodoc 创建不完整的 Javadoc。也就是说,您在 Javadoc 中不要求任何文档。 (顺便说一句,我个人觉得简单 setter/getter 的重复性也很烦人)。
JAutodoc 在内部进行的步骤是:
这是应用模板的代码。使用您的示例,下面的 member
参数是您的 getFoo
方法,并且由于您首次应用自动注释时代码中没有现有注释,因此 jdi
参数为空 (jdi.isEmpty() == true
)。
应用模板后,text
看起来也完全符合您的要求。 text
像任何 Javadoc 注释一样被解析并返回。
来自net.sf.jautodoc.source.JavadocCreator
:
public JavadocInfo applyTemplate(final IMember member, final JavadocInfo jdi) throws Exception {
final JavadocInfo templateJdi = new JavadocInfo();
final String text = JAutodocPlugin.getContext().getTemplateManager().applyTemplate(member,
config.getProperties());
if (text != null && text.length() > 0) {
templateJdi.parseJavadoc(text);
}
return jdi.isEmpty() ? templateJdi : jdi.merge(templateJdi);
}
applyTemplate
返回的 JavadocInfo
被传递给 createJavadoc
。在 createJavadoc
中,代码检查是否有注释(不包括 @param
、@return
等)。由于没有,它会尝试从可用信息中自动插入一些。简单地说,它只是取消了方法名称的驼峰式大小写,并将其作为注释。来自 net.sf.jautodoc.source.JavadocCreator
public String createJavadoc(final IMethod method, final String indent, final String lineSeparator,
final JavadocInfo jdi) throws JavaModelException {
final List<String> text = jdi.getComment();
if (text.isEmpty()) {
if (config.isCreateDummyComment()) {
if (method.isConstructor()) {
text.add(Constants.JDOC_CONSTRUCTOR);
}
else if (method.isMainMethod()) {
text.add(Constants.JDOC_MAIN);
}
else {
String comment = CommentManager.createComment(config, method.getElementName(),
CommentManager.METHOD, true, true, CommentManager.FIRST_TO_UPPER);
text.add(comment + Constants.DOT);
}
}
else {
text.add("");
}
}
else {
checkForDot(text);
}
现在调用上面两个方法的代码是这样的:
来自net.sf.jautodoc.source.SourceManipulator.addJavadoc(IMember)
:
if (config.isCreateDummyComment()) {
jdi = javadocCreator.applyTemplate(member, jdi);
}
newJavadoc = javadocCreator.createJavadoc((IMethod) member, indent, lineDelimiter, jdi);
正如您从这些代码片段中看到的,应用模板和创建评论部分(您不想要的!)都由相同的 if 语句 config.isCreateDummyComment()
控制。该 if 语句连接到 Create comment from element name
选项。
这个问题不会发生,因为该方法是一个 setter/getter ,但适用于任何地方。假设您有这段代码:
/**
* @param myFirstParam this is important and I documented it
*/
public int doThisAndThat(int myFirstParam, int anotherParamHere) {
return 0;
}
然后将 JAutodoc 应用于它(使用 Complete existing Javadoc
)然后您将得到:
未设置从元素名称创建注释
:
/**
*
*
* @param myFirstParam this is important and I documented it
* @param anotherParamHere
* @return
*/
public int doThisAndThat(int myFirstParam, int anotherParamHere) {
return 0;
}
使用 Create comment from element name
设置:
/**
* Do this and that.
*
* @param myFirstParam this is important and I documented it
* @param anotherParamHere the another param here
* @return the int
*/
public int doThisAndThat(int myFirstParam, int anotherParamHere) {
return 0;
}
我找不到任何常见嫌疑人(github 等)的来源,但可以在这里下载:http://sourceforge.net/projects/jautodoc/files/jautodoc/1.13.0/
因此,如果您愿意,您可以编辑源代码并重建您的插件。或者向开发人员提交功能请求。
JAutodoc,以其目前的形式,不能做你要求它做的事。然而,这本质上是设计使然,因为如果您说您想要自动Create comment from element name
(内部称为 Create Dummy Comment),那么您需要为您创建完整的 Javadoc。
最后,请记住,如果没有注释,则方法摘要表中不会出现任何内容,您生成的 Javadoc 看起来不完整。
关于java - JAutodoc:getter 注释模板与默认注释行为合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635089/
我有几个长度不等的 vector ,我想对其进行cbind。我将 vector 放入列表中,并尝试结合使用do.call(cbind, ...): nm <- list(1:8, 3:8, 1:5)
合并(合并)两个 JSONObjects 的最佳方式是什么? JSONObject o1 = { "one": "1", "two": "2", "three": "3" }
我在一个表中有许多空间实体,其中有一个名为 Boundaries 的 geometry 字段。我想生成一个具有简化形状/几何图形的 GeoJson 文件。 这是我的第一次尝试: var entitie
谁能说出为什么这个选择返回 3.0 而不是 3.5: SELECT coalesce(1.0*(7/2),0) as foo 这个返回 3: SELECT coalesce(7/2,0) as foo
首先抱歉,也许这个问题已经提出,但我找不到任何可以帮助我的东西,可能是因为我对 XSLT 缺乏了解。 我有以下 XML: 0 OK
有时用户会使用 Windows 资源管理器复制文件并在他们应该执行 svn 存储库级别的复制或合并时提交它们。因此,SVN 没有正确跟踪这些变化。一旦我发现这一点,损坏显然已经完成,并且可能已经对相关
我想组合/堆叠 2 个不同列的值并获得唯一值。 如果范围相邻,则可以正常工作。例如: =UNIQUE(FILTERXML(""&SUBSTITUTE(TEXTJOIN(",",TRUE,TRANSPO
使用iTextSharp,如何将多个PDF合并为一个PDF,而又不丢失每个PDF中的“表单字段”及其属性? (我希望有一个使用来自数据库的流的示例,但文件系统也可以) 我发现this code可以正常
是否有一个合并函数可以优先考虑公共(public)变量中的非缺失值? 考虑以下示例。 首先,我们生成两个 data.frames,它们具有相同的 ID,但在特定变量上有互补的缺失值: set.seed
我们正在尝试实现 ALM Rangers 在最新的 Visual Studio TFS Branching and Merging Guide 中描述的“基本双分支计划”。 .从指导: The bas
我在不同目录(3个不同名称)中有很多(3个只是一个例子)文本文件,如下所示: 目录:A,文件名:run.txt 格式:txt制表符分隔 ; file one 10 0.2 0.5 0.
我有一张包含学生等级关系的表: Student Grade StartDate EndDate 1 1 09/01/2009 NULL 2
我在学习 https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-associatio
我觉得我有世界上最简单的 SVN 用例: 我有一个文件,Test.java在 trunk SVN的。 我分行trunk至 dev-branch . 我搬家Test.java进入 com/mycompa
我有两个数据框,其中一些列名称相同,而另一些列名称不同。数据框看起来像这样: df1 ID hello world hockey soccer 1 1 NA NA
Elasticsearch 中是否缺少以扁平化形式(多个子/子aggs)返回结果的方法? 例如,当前我正在尝试获取所有产品类型及其状态(在线/离线)。 这就是我最终得到的: aggs [ { key:
如何合并如下所示的 map : Map1 = Map(1 -> Class1(1), 2 -> Class1(2)) Map2 = Map(2 -> Class2(1), 3 -> Class2(2)
我试图通过从netezza服务器导入数据来合并两个数据集。 以下是数据集,其数字为,ID为,字母为,名称为: 下表都是使用命令从netezza导入的: sqoop import --connect n
我有两个数组 $array1 = array('first', 'second', 'third', 'fourth'); $array2 = array('first', 'third', 'fou
我正在 SQL Server 中运行合并。在我的更新中,我只想在值发生更改时更新该行。有一个版本行在每次更新时都会递增。下面是一个例子: MERGE Employee as tgt USING (SE
我是一名优秀的程序员,十分优秀!