想让 API 文档表达团队约定(负责团队、弃用原因、实现规范),就要自定义 Javadoc 标签。-tag 的位置字符有什么作用?Taglet 能做什么?标签没定义时 javadoc 怎么处理?这篇用真实的 javadoc 运行逐项验证。
默认 javadoc:返回码 1;诊断:
<jtmp>/j133w/src/shop/Order.java:4: error: unknown tag: apiNote
<jtmp>/j133w/src/shop/Order.java:5: error: unknown tag: owner
<jtmp>/j133w/src/shop/Order.java:12: error: unknown tag: implSpec
<jtmp>/j133w/src/shop/Order.java:13: error: unknown tag: owner
<jtmp>/j133w/src/shop/Order.java:15: error: unknown tag: deprecated-reason
<jtmp>/j133w/src/shop/Order.java:20: error: unknown tag: undefinedtag
<jtmp>/j133w/src/shop/Order.java:7: warning: use of default constructor, which does not provide a comment
6 errors
1 warning
生成的 Order.html 里能找到 @apiNote 的内容「创建后不可变」吗: False ;@owner 的内容「payments-team」: False ;@implSpec 的内容: False
加 -Xdoclint:none:返回码 0;诊断条数 0 -tag apiNote:a:… -tag implSpec:a:… -tag owner:a:… -tag deprecated-reason:m:… -tag undefinedtag:X:(X 表示禁用):返回码 0;诊断:
<jtmp>/j133w/src/shop/Order.java:7: warning: use of default constructor, which does not provide a comment
1 warning
「API 说明」在 Order.html 里: nk">Object 订单。 API 说明: 创建后不可变。 负责团队: payments-team <section class="constructor-sum
「实现规范」在 Order.html 里: /code> - 数量 Returns: 总价 Since: 1.2 实现规范: 默认实现是 qty * price。 负责团队: pricing-team 弃用原因: 改用 total(int, Money) check <div
「负责团队」在 Order.html 里: lass="block">订单。 API 说明: 创建后不可变。 负责团队: payments-team <h
「弃用原因」在 Order.html 里: 实现规范: 默认实现是 qty * price。 负责团队: pricing-team 弃用原因: 改用 total(int, Money) check public <span class=
被 X 禁用的 @undefinedtag 的内容是否出现在页面里: False
-tag owner:t:…(t 只允许出现在类型上):返回码 1;类上的 @owner 出现 = True ;方法上的 @owner 出现 = False ;诊断: ['<jtmp>/j133w/src/shop/Order.java:4: error: unknown tag: apiNote', '<jtmp>/j133w/src/shop/Order.java:12: error: unknown tag: implSpec', '<jtmp>/j133w/src/shop/Order.java:15: error: unknown tag: deprecated-reason']-taglet team.OwnerTaglet -tagletpath:返回码 0;诊断: ['<jtmp>/j133w/src/shop/Order.java:7: warning: use of default constructor, which does not provide a comment', '1 warning'] 自定义 Taglet 输出的内容: >Object 订单。 负责团队(自定义 Taglet) payments-team API 说明: 创建后不可变。 <section 类级别与方法级别各出现的次数: 2 次(类 1 个、方法 1 个应该共 2 次) -taglet 指向不存在的类:返回码 1; ['error: Error - Exception java.lang.ClassNotFoundException thrown while trying to register Taglet team.NoSuchTaglet...', '<jtmp>/j133w/src/shop/Order.java:4: error: unknown tag: apiNote']
-Xdoclint:all(默认没有定义自定义标签):返回码 1;诊断:
<jtmp>/j133w/src/shop/Order.java:4: error: unknown tag: apiNote
<jtmp>/j133w/src/shop/Order.java:5: error: unknown tag: owner
<jtmp>/j133w/src/shop/Order.java:12: error: unknown tag: implSpec
<jtmp>/j133w/src/shop/Order.java:13: error: unknown tag: owner
<jtmp>/j133w/src/shop/Order.java:15: error: unknown tag: deprecated-reason
<jtmp>/j133w/src/shop/Order.java:20: error: unknown tag: undefinedtag
<jtmp>/j133w/src/shop/Order.java:7: warning: use of default constructor, which does not provide a comment
6 errors
1 warning
同样的 -tag 加 -Xdoclint:all:返回码 0;诊断条数 2; ['<jtmp>/j133w/src/shop/Order.java:7: warning: use of default constructor, which does not provide a comment', '1 warning']