文档编写:使用java代码辅助生成方法名称、方法参数、方法返回值信息,加快文档编写速度

背景说明

最近手头一个项目快结束了,所以需要编写一个公司内部的详细设计说明书.docx,在编写过程中,我需要对每个Service接口生成下面的表格
在这里插入图片描述

如果全部手动完成,那会面临如下几个问题:

  1. 一个个复制粘贴会导致手累的要命(重要)
  2. 方法参数上面携带的还有注解,所以在复制方法参数的时候还需要去除注解
  3. 将文字从IDEA复制到Word中,将会遇到文字格式不一样的情况,还需要手动去更改文字格式,即使使用格式刷全部刷新,也是有问题的,因为每次复制之后文字后面就会多一个回车符,我们还需要手动去删除,太麻烦了

综上所述,我不能忍受这种情况,接下来我将说出我的解决办法,这些信息都是来自于类或者接口中,因此我们完全可以把它们单独摘出来,然后选中Word中对应的列,直接粘贴进去就可以了,如下:
在这里插入图片描述

代码编写

依赖
<dependency>
    <groupId>com.thoughtworks.qdox</groupId>
    <artifactId>qdox</artifactId>
    <version>2.0.0</version>
</dependency>
代码
import com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaMethod;
import com.thoughtworks.qdox.model.JavaParameter;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class Test2 {

    public static void main(String[] args) {
        // java文件绝对路径(类 / 接口均可)
        String absolutePath = "G:\\gitlab\\item\\wiki\\kms-wiki\\kms-wiki\\src\\main\\java\\com\\leadal\\kms\\wiki\\service\\KItemPreDeletionService.java";
        JavaProjectBuilder javaProjectBuilder = new JavaProjectBuilder();
        // 设置编码方式
        javaProjectBuilder.setEncoding(StandardCharsets.UTF_8.name());
        // 存储方法名称集合
        List<String> methodNameList = new ArrayList<>();
        // 存储方法参数集合
        List<String> paramNameList = new ArrayList<>();
        // 存储方法返回值集合
        List<String> returnNameList = new ArrayList<>();
        // 添加解析文件
        javaProjectBuilder.addSourceTree(new File(absolutePath));
        for (JavaClass aClass : javaProjectBuilder.getClasses()) {
            // 解析类 / 接口中的方法
            for (JavaMethod method : aClass.getMethods()) {
                // 方法名称
                String methodName = method.getName();
                // 方法返回值名称
                String returnName = method.getReturnType().getValue();
                // 存储经过处理的方法参数
                List<String> methodParamNameList = new ArrayList<>();
                // 所有方法参数集合
                List<JavaParameter> parameters = method.getParameters();
                for (JavaParameter parameter : parameters) {
                    // 类型
                    String type = parameter.getType().getValue();
                    // 名称
                    String name = parameter.getName();
                    // 处理并填充方法参数
                    methodParamNameList.add(type + " " + name);
                }
                // 添加数据
                methodNameList.add(methodName);
                paramNameList.add(methodParamNameList.size() > 0 ? String.join(", ", methodParamNameList) : "无");
                returnNameList.add(returnName);
            }
        }
        // 输出方法数量
        System.out.println("方法数量:" + methodNameList.size());
        // 输出方法名称集合
        System.out.println("》》》》》》》》》》》方法名称《《《《《《《《《《《");
        for (String methodName : methodNameList) {
            System.out.println(methodName);
        }
        // 输出方法参数列表
        System.out.println("》》》》》》》》》》》方法参数《《《《《《《《《《《");
        for (String paramName : paramNameList) {
            System.out.println(paramName);
        }
        // 输出方法返回值列表
        System.out.println("》》》》》》》》》》》返回值《《《《《《《《《《《");
        for (String returnName : returnNameList) {
            System.out.println(returnName);
        }
    }
}
结果
方法数量:5
》》》》》》》》》》》方法名称《《《《《《《《《《《
preDeleteKItem
getPreDeleteKItemList
deleteKItem
getAlreadyDeleteKItemList
recoverKItem
》》》》》》》》》》》方法参数《《《《《《《《《《《
String kItemId
Integer currentPage, Integer pageSize, String keyword
String kItemId, Boolean flag
Integer currentPage, Integer pageSize, String keyword
String kItemId
》》》》》》》》》》》返回值《《《《《《《《《《《
ResultUtils
ResultUtils
ResultUtils
ResultUtils
ResultUtils
使用

我们可以根据返回值中的数量来创建Word中表格的行数,我们以方法名称举例,上面的方法数量是5,我们只需要把Word表格中的空白行数设置为5,然后选择上面输出结果中的方法名称,即:

preDeleteKItem
getPreDeleteKItemList
deleteKItem
getAlreadyDeleteKItemList
recoverKItem

之后在Word选中所有空白行的第一列执行粘贴操作即可,最终效果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值