Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Naccl/Java2Doc

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

最近写毕设论文,发现一件很奇怪的事情,要求将每个类的字段和方法签名以及对应的解释写在表格里,类似下面的图片,大胆猜测一下,这会不会是判断系统功能丰富程度的依据?如果我有几百个类,像这么一行一行去 copy,,,若是我只 copy 一部分,那会不会显得我的项目过于简单 ?🤯? 这种无用又无趣纯属浪费粮食的事情我是完全不乐意做的,按往常的经验,在 copy 的时候我会头皮发麻浑身难受然后跑去打游戏,且不说光看这种表格能看出什么所以然,但凡有一点营养我都不会写这个工具。但愿人长久,搬砖不再有。此乃文档大师必备工具!

灵感来自screw,其实我是在论文的数据库章节用了这个工具,然后到了项目代码章节,发觉我也可以让电脑来帮我写,论文真是太坏了,竟然让电脑当苦力!

功能

  • 支持生成大型 Java 项目、多个项目、多个模块、单个类
  • 支持自定义模板
  • 支持显示或隐藏访问修饰符
  • 支持保留或忽略没有 JavaDoc 注释的字段、方法、类
  • 支持按包名、类名、字段名、方法名的前缀、后缀来忽略生成

当然前提是类中的字段或方法有 JavaDoc /** */,而不是单行注释//或多行注释/* */,否则将不会生成字段/方法的描述

P.s. 即使是不能通过编译的 Java Class 也可以生成,只要有 .java 文件即可

文档生成支持

  • Word
  • HTML
  • Markdown

文档截图

  • Word

word

  • HTML

HTML

  • Markdown

Markdown

下图是spring-framework项目代码生成的 word 文档,总大小 164 MB,耗时 70s ,讲道理很庞大的项目应该也没问题

(我已经把生成的四千页贴进论文里了,老师很喜欢,孩子很开心!)

spring-framework

使用方法

CLI

目前推荐此方式,下载 Releases 中的 Java2Doc.jar,通过 CLI 调用,已测试 JDK 8、11 可用,16、17 不太行

java -jar Java2Doc-x.y.z.jar -p /Users/username/YourProjectPath

具体参数:

usage: java -jar Java2Doc-x.y.z.jar -p path1[;path2;path3;...] [-n <projectname>] [-v <version>] [-d <desc>] [-o <outputdir>] [-f <filename>] [-t <doctype>]
    --access-modifier <true/false>           Display access modifier, default is true
    --custom-template <path>                 Custom template path
 -d,--description <desc>                     The description of your project
    --engine-type <type>                     Template engine type, can be 'freemarker'
 -f,--filename <name>                        Document file name, default is 'Java2Doc'
 -h,--help                                   This usage help
    --ignore-class-prefix <prefixlist>       The ignore list of class prefix, separated by ';'
    --ignore-class-suffix <suffixlist>       The ignore list of class suffix, separated by ';'
    --ignore-empty-class <true/false>        Ignore classes without field and method, default is false
    --ignore-error <true/false>              Ignore errors in parsing JavaDoc, default is true
    --ignore-field-prefix <prefixlist>       The ignore list of field prefix, separated by ';'
    --ignore-field-suffix <suffixlist>       The ignore list of field suffix, separated by ';'
    --ignore-method-prefix <prefixlist>      The ignore list of method prefix, separated by ';'
    --ignore-method-suffix <suffixlist>      The ignore list of method suffix, separated by ';'
    --ignore-nocomment-field <true/false>    Ignore fields without comment, default is false
    --ignore-nocomment-method <true/false>   Ignore methods without comment, default is false
    --ignore-pkg-prefix <prefixlist>         The ignore list of package prefix, separated by ';'
    --ignore-pkg-suffix <suffixlist>         The ignore list of package suffix, separated by ';'
    --include-private <true/false>           Parsing JavaDoc includes private classes and members, default is true
    --max-depth <number>                     The maximum depth to traverse a directory starting from project path
 -n,--project-name <name>                    The name of your project
 -o,--output-dir <path>                      Document output directory, default is current directory
 -p,--project-paths <pathlist>               The list of project paths you want to generate, separated by ';'
 -t,--doctype <type>                         Document type, can be 'word', 'html', 'md', default is 'word'
 -v,--version <version>                      The version of your project

Clone

git clone https://github.com/Naccl/Java2Doc.git

建议 JDK 8,解析 JavaDoc 依赖的 tools.jar 从 JDK 9+ 开始已经被移除了,虽说我已经使用在 pom.xml 中使用本地仓库了,但还是不确定高版本是否可用

修改 Main.java 中的基本配置信息

//待生成的项目根路径列表
projectPaths.add("/Users/naccl/work/idea-project/Java2Doc");
//项目名称
String projectName = "Java2Doc";
//文档版本
String version = "1.0.0";
//文档描述
String description = "文档大师必备工具!";
//文档输出目录
String fileOutputDir = "/Users/naccl/Desktop";
//生成文档名称
String fileName = "Java2Doc";
//生成文档类型 DocumentType.WORD、DocumentType.HTML、DocumentType.MARKDOWN
DocumentType documentType = DocumentType.WORD;

然后直接 Run 它!

如果你配置过 Maven 镜像仓库,且 Maven 的配置文件(通常是~/.m2/settings.xml )中对应镜像的 mirrorOf*,那么 pom.xml 中配置的 repository 将不起作用,需要改为

<mirrorOf>external:*</mirrorOf>

只让外部仓库的走镜像,本地的继续走本地

Maven

WIP

已知问题

由于 Java 类中的字段注释、方法注释是通过调用 com.sun.tools 解析 JavaDoc 获取的,JavaDoc 有个参数 -classpath 可以指定加载要解析的 Java 类中 import 的包。但往往项目需要的依赖相当多,并且通常是 Maven、Gradle 方式来引入依赖,难以全部作为 -classpath 的值提供给 JavaDoc 解析器,所以会导致一些自定义类的泛型解析结果为 <any> ,本项目中的做法是将这些 <any> 替换成 T 来显示,尚不知是否有更好的办法。

参与贡献

  • 文档格式

    除了 Word、HTML、Markdown,或许还有其它可以实现的格式

  • 模板样式

    每个人可能有不同的样式需求,一般都需要编写专门的模板,大伙们可以分享自己的模板

  • 模板引擎

    其它的模板引擎实现,如 thymeleaf、velocity

欢迎 PR!

License

Apache-2.0 License

Thanks

再次感谢 screw,项目实现过程中参考了 screw 的设计思路

About

📝 Java Class 描述文档生成器

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.