java 文档自动生成的神器 idoc
作为一名开发者,每个人都要写代码。
工作中,几乎每一位开发者都要写文档。
因为工作是人和人的协作,产品要写需求文档,开发要写详细设计文档,接口文档。
可是,作为一个懒人,平时最讨厌的一件事情就是写文档。
写文档最令我不爽的地方是在于代码备注要改一遍,然后文档再改一遍。
所有重复的劳作,都是对于我们宝贵摸鱼时间的最大浪费。
于是,我就常常想,能不能只写一遍呢?
idoc[1] 为 java 项目生成项目文档。
基于原生的 java 注释,尽可能的生成简介的文档。用户可以自定义自己的模板,生成自己需要的文档。
实现原理:基于 maven 插件,类似于 javadoc。可以更加灵活,允许用户自定义。
(1)基于 maven 项目生成包含大部分信息的元数据
(2)默认支持 markdown 简化文档的生成,支持自定义模板
(3)支持用户自定义文档生成器
(4)支持用户自定生成文档的类过滤器
(5)添加字段类型别名,支持用户自定义
jdk1.8+
maven 3.x+
使用 maven 引入当前 idoc 插件。
为了演示文档,我们创建了一个 Address 对象。
当然,你可以发现这里只是把元数据进行输出到控台,意义不大。
我们可以根据需求,自定义实现生成类。
比如下面的方式,可以使用内置的 MarkdownDocGenerator 输出到 markdown 文件。
效果可以参考:
heaven 文档目录[2]
ps: heaven[3] 项目是个人整理了多年的工具包,几百个类,手写文档估计要很久。
Java 文档一直是一个大问题。
很多项目不写文档,即使写文档,对于开发人员来说也是非常痛苦的。
不写文档的缺点自不用多少,手动写文档的缺点也显而易见:
1.
非常浪费时间,而且会出错。
2.
无法保证及时更新。代码已经变了,但是文档还要同步修改。需要强制人来维护这一种一致性。这很难。
java 的文档有几类:
1.jdk 自带的 doc 生成。这个以前实践给别人用过,别人用 C#,看到 java 的默认文档感觉很痛苦。
就算是我们 java 开发者,也很讨厌看 jdk 的文档。看着不美观,也很累。
1.swagger-ui 是基于 java 注解的文档生成工具。相对而言比较优雅,也非常强大。
但是缺点也是有的。开发人员要写 jdk 原来的注释+注解。注解太多,导致写起来也很痛苦,大部分开发者后来还是选择了放弃。
那么问题来了?我们怎么办才能尽可能的让开发人员,和文档阅读人员都乐于接受呢?
jdk 自带的 doc 就是基于 maven 插件的,本项目也是。
区别如下:
1.
尽可能的保证和 Java 原生注释一致,让开发者很容易就可以使用。
2.
尽可能的信息全面,但是文档简洁。让文档的阅读者享受到等同于手写文档的体验。
3.
将信息的获取和生成区分开。方便用户自己定义自己的输出方式。
为了更加灵活的实现文档的生成和文档元数据的生成,提供如下参数
简单的文档,建议直接生成在一个文件。
如果较为复杂,则可以设为 false,则会按照
默认的命令行文档,主要用于演示和信息查看,不具有实际意义。
建议引入 idoc-ftl 模块,使用 MarkdownDocGenerator 生成器。
可以同时指定多个。
可引入 idoc-api 自行定义。
实际的文档,主要关心定义的方法。
我们可以针对 DocClass 的包名,过滤只生成 Service 方法文档。
如果是在以前的基础上,则可以加上 @since @version 等信息的过滤。
可以同时指定多个。
可引入 idoc-api 自行定义。
可以参考当前项目的 idoc-test 模块。
整体配置如下:
指定使用 Markdown 文档生成器,可以同时指定多个。
MarkdownDocGenerator 在 idoc-ftl 模块中,需要引入对应的依赖。
当然 idoc-core 默认依赖 idoc-ftl。
如果不定义自己的类生成过滤器,则会生成所有的类信息。
一般使用中我们只关心 service 方法,所以添加了类的过滤实现。
实现如下:
注意,也需要将你定义这个过滤器的 jar 添加依赖,否则无法找到对应的类信息。
@require 表示当前字段是否必填,作为方法入参时。
@remark 表示当前字段的备注信息。
•QueryUserService.java
•日志信息
当前文件路径日志会打印,比如我自己测试的为:
/Users/houbinbin/code/_github/idoc/idoc-test/src/main/resources/idoc-gen/idoc-test-全部文档.md
参见文档:
idoc-test-全部文档.md[4]
可以参考当前项目的 idoc-test 模块。
有时候页面显示类型,希望更加友好。
所以系统内置了一些别名显示,也同时支持自定义别名。
系统当前版本提供了常见的别名。
详情见 com.github.houbb.idoc.core.util.JavaTypeAliasUtil
可以通过 typeAlias 指定自定义的字段别称。
用户自定义的字段别名优先级高于系统默认。
后面定义的别名会直接覆盖前面的别名。
运行测试日志如下:
其中 typeAlias 就是字段类型的别名,我们可以用来更加友好的显示字段信息。
自定义的方式采用基于 xml 的方式是比较方便。
但是数量比较多的时候就没有那么方便,本来考虑添加对应的配置属性接口,权衡下还是使用了 xml 配置的方式。
如果一个字段,没有指定别名,是否使用 comment 信息做替代?
建议使用,当前版本不做处理。
•为什么使用
比起冗长的类信息,大部分人更乐于看到解释。
如果是针对同构的系统(都是 java 语言),则可以理解。
如果是针对异构的系统(比如前台是 php),则不易于理解。
•为什么不处理
大部分的接口都是常见字段, 性价比不高。
可能存在字段没有些 comment 的情况,会导致判断的复杂性。
直接修改模板即可,使用原来的字段 type 属性即可。
https://github.com/houbb/idoc
当然,这个项目还有很长的路要走。
如果喜欢,欢迎 fork star~
[1] idoc: https://github.com/houbb/idoc[2] heaven 文档目录: https://github.com/houbb/heaven/blob/master/doc/gen/heaven-%E7%B4%A2%E5%BC%95.md[3] heaven: https://github.com/houbb/heaven[4] idoc-test-全部文档.md: doc/blog/demo/idoc-test-全部文档.md
2022最新版阿里Java开发手册发布!「附PDF下载」
哈喽大家好啊,今天Hydra要给大家分享一份实用的《Java 开发手册-黄山版》,读过往年版本这本小册子的小伙伴们应该熟悉,它是阿里巴巴集团技术团队的集体智慧结晶和经验总结。经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册。
在前不久,终于发布了2022年最新版本的『黄山版』,大家可以来先一睹为快!
获取完整PDF内容:请转发、点赞,关注头条号后私信 “黄山” 向小编索取。
大家可以先预览一下目录,总共分为七大模块,以及一些附加信息。
下面带领大家,先来分章节预览一下各个部分的内容,对这本小册子有一个大致的了解。
2、异常日志
3、单元测试
4、安全规约
5、MySQL数据库
6、工程结构
7、设计规约
其他的内容还有很多,这里就不再一一描述了,有兴趣的小伙伴们可以自己下载这本电子书来看一下。
获取完整PDF内容:请转发、点赞,关注头条号后私信 “黄山” 向小编索取。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。