Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI脚本检查api参数存在的问题 #6839

Open
fufu0615 opened this issue Aug 19, 2024 · 1 comment
Open

CI脚本检查api参数存在的问题 #6839

fufu0615 opened this issue Aug 19, 2024 · 1 comment
Assignees
Labels
HappyOpenSource 快乐开源活动issue与PR

Comments

@fufu0615
Copy link
Contributor

fufu0615 commented Aug 19, 2024

问题复现

本地进行文档 CI ,在 ci_start.sh 中运行检查 api 参数的脚本 check_api_parameters.sh ,对 ./docs/api/paddle 路径下的所有 *_cn.rst 文档进行检查。

使用脚本找到部分异常文档,异常文档主要分为两大类:

  1. 输出异常信息: check_api_parameters_funcname_not_found ,一般是文档开头的api格式的问题,导致正则表达式无法获取到,也是脚本主要的问题所在。

    大致可以分为以下几类:

    • api不以括号结尾

    • api后有多余冒号

    • 为总览文档,开头无api

  2. 输出异常信息: check_api_parameters_failed,一般是文档其他格式问题

    大致分为以下几类:

    • 文档参数模块缩进错误

    • api包含的可变参数*{}或**{}被忽略

    • 文档或api缺少name参数

    • api_info_all.json文件中没找到

    • api无参数,但文档写的“无”被当成一个参数

    • 文档参数名称和api不同

    • 文档缺少参数板块

    • 文档或api中缺少对某个参数的描述

    • 文档描述一个参数时换行

异常文档的具体名单

    • api不以括号结尾

      "api/paddle/CPUPlace_cn.rst",
      "api/paddle/CUDAPinnedPlace_cn.rst",
      "api/paddle/CUDAPlace_cn.rst",
      "api/paddle/NPUPlace_cn.rst",
      "api/paddle/Tensor_cn.rst",
    • api后有多余冒号

      "api/paddle/pdist_cn.rst",
      "api/paddle/reduce_as_cn.rst",
      "api/paddle/rot90_cn.rst",
    • 为总览文档,开头无api

      "api/paddle/Overview_cn.rst"
  1. check_api_parameters_failed,一般是文档其他格式问题

    大致分为以下几类:

    • 文档参数模块缩进错误

      "api/paddle/atan2_cn.rst",
      "api/paddle/deg2rad_cn.rst",
      "api/paddle/erfinv_cn.rst",
      "api/paddle/expm1_cn.rst",
      "api/paddle/gcd_cn.rst",
      "api/paddle/lcm_cn.rst",
      "api/paddle/lerp_cn.rst",
      "api/paddle/put_along_axis_cn.rst",
      "api/paddle/rad2deg_cn.rst",
      "api/paddle/renorm_cn.rst",
      "api/paddle/select_scatter_cn.rst",
      "api/paddle/take_along_axis_cn.rst",
      "api/paddle/take_cn.rst",
    • api包含的可变参数*{}或**{}被忽略

      "api/paddle/atleast_1d_cn.rst",
      "api/paddle/atleast_2d_cn.rst",
      "api/paddle/atleast_3d_cn.rst",
      "api/paddle/einsum_cn.rst",
      "api/paddle/load_cn.rst",
      "api/paddle/meshgrid_cn.rst",
    • 文档或api缺少name参数

      // 文档中缺少
      "api/paddle/bitwise_and_cn.rst",
      "api/paddle/bitwise_not_cn.rst",
      "api/paddle/bitwise_or_cn.rst",
      "api/paddle/bitwise_xor_cn.rst",
      
      // api中缺少
      "api/paddle/numel_cn.rst",
    • api_info_all.json文件中没找到

      "api/paddle/cartesian_prod_cn.rst",
      "api/paddle/log_normal_cn.rst",
    • api无参数,但文档写的“无”被当成一个参数

      "api/paddle/get_cuda_rng_state_cn.rst",
      "api/paddle/get_default_dtype_cn.rst",
    • 文档参数名称和api不同

      "api/paddle/histogramdd_cn.rst",
    • 文档缺少参数板块

      "api/paddle/index_fill_cn.rst",
      "api/paddle/index_put_cn.rst",
    • 文档或api中缺少对某个参数的描述

      "api/paddle/round_cn.rst",
      "api/paddle/save_cn.rst",
    • 文档描述一个参数时换行

      "api/paddle/unstack_cn.rst"

修复建议

  1. 对于第一类异常文档,除总览文档 Overview_cn.rst 外,可通过修改 check_api_parameters.py 脚本中 141 行用于提取 api 的正则表达式来解决:

    # 修改前
    r"^\.\.\s+py:(method|function|class)::\s+(\S+)\s*\(\s*(.*)\s*\)\s*$"
    
    # 修改后
    r"^\.\.\s+py:(method|function|class)::\s+(\S+?)(?:\((.*?)\))?\s*:?\s*$"
  2. 对于第二类异常文档,考虑到大多是在参数检查脚本被关闭后上传的,可能是因为缺少了参数检查这一步导致的文档格式不统一。

    • 计划先解决以下几类可以通过修正文档格式来处理的异常:

      • 文档参数模块缩进错误
      • 文档或api缺少name参数
      • 文档参数名称和api不同
      • 文档描述一个参数时换行
    • 对于下面这类异常,可以尝试完善 check_api_parameters.py 脚本中获取api参数的部分来解决:

      • api包含的可变参数*{}或**{}被忽略
    • 下面这类异常的解决方案,需要进一步查看 docs\api\copy_codes_from_en_doc.py 脚本来确定:

      • api_info_all.json文件中没找到
    • 剩下的三类异常则考虑确定一下这类文档的具体规范写法再解决:

      • api无参数,但文档写的“无”被当成一个参数
      • 文档缺少参数板块
      • 文档或api中缺少对某个参数的描述
@fufu0615
Copy link
Contributor Author

尝试修复的pr:#6864

@fufu0615 fufu0615 removed their assignment Sep 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HappyOpenSource 快乐开源活动issue与PR
Projects
None yet
Development

No branches or pull requests

2 participants