Giter Club home page Giter Club logo

smart-doc's People

Contributors

2222 avatar 2hexigua avatar baboy avatar bugdesigner1 avatar chenqi146 avatar dai19470 avatar daisy-yangyang avatar delei avatar fioooooooo avatar gujinicy avatar hans-wu-cn avatar hwck avatar jingxiang avatar jtepromise avatar leeyazhou avatar linwumingshi avatar luchuanbaker avatar netdied avatar noear avatar selfly avatar shalousun avatar sunyan1236 avatar tianmingxing avatar tianya66 avatar vector-plus avatar youngledo avatar younker99 avatar zhreimu avatar zoze0 avatar zuonidelaowang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smart-doc's Issues

1.8.6版本仍然有数组下标越界的问题

smart-doc 1.8.6
smart-doc-maven-plugin 1.0.7

[ERROR] java.lang.ArrayIndexOutOfBoundsException: 1 at com.power.doc.utils.DocClassUtil.classNameFix (DocClassUtil.java:122) at com.power.doc.utils.DocClassUtil.getSimpleGicName (DocClassUtil.java:58) at com.power.doc.helper.JsonBuildHelper.buildJson (JsonBuildHelper.java:99) at com.power.doc.helper.JsonBuildHelper.buildReturnJson (JsonBuildHelper.java:63) at com.power.doc.template.SpringBootDocBuildTemplate.buildControllerMethod (SpringBootDocBuildTemplate.java:170) at com.power.doc.template.SpringBootDocBuildTemplate.getApiData (SpringBootDocBuildTemplate.java:81) at com.power.doc.builder.HtmlApiDocBuilder.buildApiDoc (HtmlApiDocBuilder.java:78) at com.smartdoc.mojo.HtmlMojo.executeMojo (HtmlMojo.java:47) at com.smartdoc.mojo.BaseDocsGeneratorMojo.execute (BaseDocsGeneratorMojo.java:120) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290) at org.apache.maven.cli.MavenCli.main (MavenCli.java:194) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

Is it possible to support Front-matter?

Typically, MD files have Front-matter metadata like title, tags, categories, etc. Could these be configured by adding annotations to the class?
一般md文件会增加一些Front-matter元数据
如title 、tags、categories等,能否通过在类上增加注解的方式配置上这些信息
image

1.7.8版本有个缺陷

通过1.7.7版本对接口生成文档是正常的,但是升级到最新版本就有问题了
TIM图片20191209155714

执行maven插件报错

//生成postman json数据
mvn -Dfile.encoding=UTF-8 smart-doc:postman
`
java.lang.ArrayIndexOutOfBoundsException: 1
at com.power.doc.utils.DocClassUtil.classNameFix (DocClassUtil.java:122)
at com.power.doc.utils.DocClassUtil.getSimpleGicName (DocClassUtil.java:58)
at com.power.doc.helper.JsonBuildHelper.buildJson (JsonBuildHelper.java:99)
at com.power.doc.helper.JsonBuildHelper.buildReturnJson (JsonBuildHelper.java:63)
at com.power.doc.template.SpringBootDocBuildTemplate.buildControllerMethod (SpringBootDocBuildTemplate.java:170)
at com.power.doc.template.SpringBootDocBuildTemplate.getApiData (SpringBootDocBuildTemplate.java:81)
at com.power.doc.builder.HtmlApiDocBuilder.buildApiDoc (HtmlApiDocBuilder.java:78)
at com.smartdoc.mojo.HtmlMojo.executeMojo (HtmlMojo.java:47)
at com.smartdoc.mojo.BaseDocsGeneratorMojo.execute (BaseDocsGeneratorMojo.java:122)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions (MojoExecutor.java:355)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:200)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[INFO]
[INFO] <<< smart-doc-maven-plugin:1.0.6:postman (default-cli) < compile @ sentinel-dashboard <<<
[INFO]
[INFO]
[INFO] --- smart-doc-maven-plugin:1.0.6:postman (default-cli) @ sentinel-dashboard ---
[INFO] Smart-doc Starting Create API Documentation.
[INFO] API Documentation output to D://md2
[ERROR]

`

不能正常解析嵌套泛型

Expected Behavior(您期望的结果)

解析下面的rpc方法时:

SomeResp<PageInfo<SomeVO>>  someFunction(SomeReq req);·

其中PageInfo是pageHelper的分页包装类,SomeVO是如下所示VO对象,

public class SomeVO {
    String name;
    Integer age;
    BigDecimal amt;
}

SomeResp是如下所示的泛型类:

public class SomeResp<T> {
     T result;
}

期望分析结果是在响应列表列出的SomeVO的成员,
不列出PageInfo成员(提供一种指定类型不展开的机制)。

Current Behavior(当前结果)

  1. smart-doc生成文档的接口定义是:
Definition:  SomeResp<SomeVO>>  someFunction(SomeReq req);  // 少了“PageInfo<” 
  1. Response-fields列表里层层将result进行了展示,但是层层展示的是PageInfo类的成员,完全不涉及SomeVO。
    下面是上传的贴图,众所周知的原因,可能翻出去才能正常显示。
    image

Possible Solution(bug解决建议)

Steps to Reproduce (Bug产生步骤,请尽量提供用例代码)

Context(Bug影响描述)

Your Environment(您的使用环境)

smart-doc-maven-plugin 1.1.2版本

生成postman请求参数

对post方式的接口生成请求参数完整
但是对get方式为什么不生成请求参数了 导致每次都需要自己填
可以支持下get方式的请求参数生成么
导入postman能否智能合并 别强行覆盖了 可能设置过需要的请求参数了

Dubbo自2.7.7版本起@Service标签已改为@DubboService

Summary

1 建议
把dubbo注解定义SERVICE改为数组,以兼容@service和@DubboService两种标签。
2 探讨
对于只通过配置文件暴露的dubbo服务,比如下面这样的:

  <bean id="demoService" class="com.demo.provider.DemoServiceImpl" /> 
  <dubbo:service interface="com.demo.provider.Provider" ref="demoService" />

扫一下配置文件是不是也能搞定?

Basic example

If the proposal involves a new or changed API, include a basic code example. Omit this section if it's not applicable.

Motivation

Why are we doing this? What use cases does it support? What is the expected outcome?

文档标题能否修改

image
image

楼主您好, 问下这个工具怎么设置标题别名; 我有时想设置标题为中文、增加新的列展示; 如下
Parameter Type Description Required Since
Field Type Description Since

参数名 类型 描述 是否必填 字段长度 版本 父节点
字段名 类型 描述 版本 .......

无法支持多个泛型

TestBean<Bean1, Bean2> 这种的结构生成文档时,Bean2无法正确生成,会用Bean1的内容。

smart-doc生成的postman.json文件导入到yapi里报错

附件是生成的postman文件.
未命名1591410903
{ "info": { "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json", "_postman_id": "668e04ad-2b3f-4b94-b0d3-e0d1d471f693", "name": "smart-doc 2020-06-06 10:26:18" }, "item": [ { "name": "用户管理控制器", "item": [ { "name": "分页查询用户信息", "request": { "method": "GET", "body": { "mode": "formdata", "formdata": [ { "key": "pageNum", "type": "text", "desc": "当前页", "value": "1" }, { "key": "pageSize", "type": "text", "desc": "每页大小", "value": "10" } ] }, "url": "http://10.1.130.107:8888/user/list/tt19nd?pageNum\u003d1\u0026pageSize\u003d10", "description": "分页查询用户信息", "header": [] }, "description": "分页查询用户信息" } ] } ] }

[feature request] html doc的javascript使用原生实现

Summary(关于这个pr的描述)

html docjavascript使用原生实现

Motivation(提出这个pr目的)

有的时候必须在内网开发,文档没法在外网下打开,导致下载不了jquery网络字体
主要影响是左侧接口菜单没有了折叠功能

Does it support Vert.x?

Planning to use Vert.x, just looking for an API documentation tool, does it support that?
打算使用 Vert.x,刚好想寻找接口文档工具,请问支持吗?

Sent from PPHub

能否支持自定义显示内容

现在文档显示以下内容
URL: http://XXX
Type: GET
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Description: XXXXX
.......

我们想在文档里面显示接口的开发者
author
能否自定义显示内容, 方便每个公司不同的需求

感谢

忽略请求整个实体使用@ignore不方便

Summary(关于这个pr的描述)

请求参数我想要忽略这个WebSecurityContextService 类,这个类里有很多其他对象的属性,使用@ignore十分的不方便,要改的类太多了,请问有什么方法解决?

Basic example(pr的用例)

@PostMapping("delete")
public ResultObject deleteConfigMap(
@RequestParam String configMapName,
WebSecurityContextService securityContextService
) {}

controller 返回值使用RestControllerAdvice改写了,接口文档如何输出改写后的返回值

比如controller返回值是String,改写后的是自定义类ReturnStatusObj.
最终返回的是ReturnStatusObj,但接口文档中输出的是String.
请问通过什么方式可以实现?

@RestControllerAdvice(basePackages = {"com.xbsj.database.controller"})
public class ControllerResultInterceptor implements ResponseBodyAdvice {

@Override
public boolean supports(MethodParameter methodParameter, Class aClass) {
    //这里直接返回true,表示对任何handler的responsebody都调用beforeBodyWrite方法
    return true;
}

@Override
public Object beforeBodyWrite(Object resBody, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {

    ReturnStatusObj statusObj = new ReturnStatusObj(resBody);
    if(resBody instanceof String)
        return JSONObject.toJSONString(statusObj, SerializerFeature.WriteMapNullValue);

    return statusObj;
}

}

html报告左侧列表只有第一个目录展示2级目录

Summary

html报告左侧列表只有第一个目录展示2级目录,查看了allinone.css文件,里面二级目录默认是sectorlevel2{display:none}。
建议:

  1. 最好是左侧列表能搞个目录折叠,这样二级目录想打开就打开,想折起来就折起来;
  2. 如果折叠不好搞,模板css的sectorlevel2默认成display:block,或者提供一个配置项让用户自己确定是否全部展开。

Basic example

Motivation

Who is using smart-doc

Feeling concerned about smart-doc users, we will strive to do a good job of smart-doc to provide developers with a useful Api document generation tool.

Purpose of this issue

  • Collect users who use smart-doc in the project.

  • Collect suggestions from more users.

  • Learn from more developers to contribute.

We look forward to hearing from you

  • Your company, school or organization

  • Logo of your company, school or organization (hope you provide a logo, we will show this logo on the official website)

Does it support spring-data-rest?

Spring Data REST is built on top of Spring Data repositories and automatically exposes them as REST resources. It utilizes hypermedia to allow clients to discover the functionality exposed by repositories and integrates these resources into related hypermedia actions.

As it seems, currently only paths under controllers are supported, while the interfaces automatically generated by data-rest cannot be added to the API documentation, right?
Spring Data REST构建在Spring Data repositories之上,并自动将其导出为REST资源。它利用超媒体来允许客户端查找存储库暴露的功能,并将这些资源自动集成到相关的超媒体功能中。

现在貌似只支持controller下的路径,而data-rest自动生成的接口似乎是没法加入到api文档中的?

对枚举支持不好

URL: http://192.168.31.100:9011/a/customer/info/audit/{action}
Type: POST

Content-Type: application/json; charset=utf-8

Description:

Request-headers:

Parameter Type Description Required Since
action string No comments found. true -
id int64 主键ID false -
comment string No comments found. false -
action string No comments found. false -

我这里的action是一个枚举类型,但是生成出来显示为string,让使用者摸不着头脑。

建议支持用户自定义rpc接口注解

Summary

建议生成rpc接口文档支持用户自定义的接口注解,以支持生成用户自己的rpc接口文档。

Basic example

  1. 用户自定义的rpc接口注解
public @interface MyService {
...
}
  1. 使用自定义rpc接口注解的接口类:
@MyService  
public interface MyInterface {
...
}
  1. 生成自定义rpc接口注解的接口文档:
mvn smart-doc:rpc-html  -Drpc.annotations="com.xxx.MyService,com.xxx.YourService"  // 支持逗号分隔多个自定义注解

Motivation

扩展smart-doc的适应场景

postman get 请求参数生成

看你们修复了我之前提的postman生成get参数的bug
我下载了dev分支后 测试了
接口中存在文件上传类型无法支持

@GetMapping(value = "/test")
public void test(@RequestParam MultipartFile file ,@RequestParam String aaa)

@PostMapping(value = "/test")
public void test(@RequestParam MultipartFile file ,@RequestParam String aaa)

当返回值对象使用Void(java.lang.Void) 会出现死循环

当接口返回值或者参数,属性引用是自己的话,就会出现死循环,最终导致内存溢出。
`java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at com.power.doc.builder.SourceBuilder.buildJson(SourceBuilder.java:966)
at com.power.doc.builder.SourceBuilder.buildJson(SourceBuilder.java:966)
at com.power.doc.builder.SourceBuilder.buildJson(SourceBuilder.java:966)
at com.power.doc.builder.SourceBuilder.buildJson(SourceBuilder.java:966)`

[feature request] <style></style>方式嵌入css生成单html

Summary(关于这个pr的描述)

增加一个配置项,html AllInOne模式文档可以<style></style>方式嵌入css

Basic example(pr的用例)

If the proposal involves a new or changed API, include a basic code example. Omit this section if it's not applicable.

Motivation(提出这个pr目的)

目前的html AllInOne模式htmlcss分开,以链接方式引入,在需要离线传输时需要用压缩包做成一个文件方便传输
能否加一个配置生成css内嵌入html,实现真正的ALL IN ONE

返回结果嵌套对象集合没有解析

Expected Behavior(您期望的结果)

文档中显示嵌套集合中对象的属性

Current Behavior(当前结果)

嵌套对象会显示,但是集合对象(List<>)的泛型不会显示

Possible Solution(bug解决建议)

Steps to Reproduce (Bug产生步骤,请尽量提供用例代码)

对象结构如下:
R 是统一返回对象,ProductOrderVo放在R对象的data属性中,但是 ProductOrderVo 中的productList属性无法解析出来

public class R<T> implements Serializable {
  private String code = ResultCode.SUCCESS.getCode();
  private String msg = "success";
  private T data;
}
public class ProductOrderVo implements Serializable {
  private List<ProductAppOrderRelVo> productList;
}
public class ProductAppOrderRelVo implements Serializable {
  private String productName;
  private List<AppOrderAddedVo> addedList;
  private String userName;
}

Context(Bug影响描述)

Your Environment(您的使用环境)

  • smart-doc version: 1.8.8
    使用测试类生成文档的方式。代码如下:
@SpringBootTest
public class SmartDocTests {
  @Test
  public void testBuilderControllersApi() {
    ApiConfig config = new ApiConfig();
    config.setDataDictionaries(null);
    // 以前的版本为setSourcePaths,SourceCodePath为SourcePath
    config.setSourceCodePaths(
        SourceCodePath.path().setDesc("本项目代码").setPath(DocGlobalConstants.PROJECT_CODE_PATH)
        ,
        SourceCodePath.path()
            .setDesc("加载外部项目源码")
            .setPath(
                "D:\\xxx\\xxx\\xxx\\"
                    + DocGlobalConstants.PROJECT_CODE_PATH));
    config.setServerUrl("http://ip:port/context");

    config.setAllInOne(true);

    config.setOutPath("d:\\test\\md");
    ApiDocBuilder.buildApiDoc(config);
  }
}

返回泛型的T是byte数组时抛出异常

mvn smart-doc:rpc-html生成dubbo接口文档时,遇到这样的方法会抛出异常:
SomeResponse<byte[]> someMethod(String somParam);

Expected Behavior(您期望的结果)

能正常解析。

Current Behavior(当前结果)

RpcDocBuildTemplate.methodDefinition抛出异常:
java.util.regex.PatternSyntaxException: Unclosed character class near index 5
byte[]

Possible Solution(bug解决建议)

Steps to Reproduce (Bug产生步骤,请尽量提供用例代码)

Context(Bug影响描述)

Your Environment(您的使用环境)

smart-doc 1.9.0
jdk 1.8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.