DartDoc提取代码注释生成文档

介绍

DartDoc是Dart官方通过解析代码注释生成文档的一种方式,在执行dartdoc .命令后就可以解析当前目录下的所有代码文档,当前Flutter的几乎所有源代码文档都是通过此方式生成出Html;传统方式生成文档如wike/yuque都是通过人工书写同步,此种方式往往会造成信息更新不同步,比如一个feat上线但是文档未更新情况,为保证信息同步,将代码注释提取生成文档是一个比较有优势的地方;

在Flutter中自带了dartDoc的相关依赖,具体目录:flutter/bin/cache/dart-sdk/bin/dartdoc ,因此我们将目录配置 .base_profile文件中如下即可使用dartDoc相关命令

export PATH=${PATH}:xxx/flutter/bin/cache/dart-sdk/bin

flutter生成工程,然后在根目录下执行dartdoc .就可以提取注释生成一个doc/api目录,其中会有很多html文件就是提取的对应文档,文档入口如index.html,样式大概如下:

image.png

实践问题

1. 注释提取规范

dartdoc提取的注释需要///注释在头部,像java/js等//,/** 等方式都无法提取生成文档,因此在写注释时候需要按照flutter规范的///注释规则去写标准注释,此外在注释中支持markdown的相关语法,因此可以在注释中写一个表格的markdown也可以生成文档哦;

2. lib/src目录下的文件无法生成文档

在实际情况下,创建一些module依赖很可能会生产lib/src目录,此目录下的文件dartdoc无法解析提取日志,因此需要将src目录去除;

3. 私有类的注释不解析

如下情况,APPWidget类上方注释文档会提取生产,而_APPWidget不会提取生产注释文档;

/// APP Widegt Test
class APPWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

/// _APPWidegt Test
class _APPWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

4. 通过dartdoc_options.yaml配置条件

默认会生成dart文件的文档,但是实际很多情况我们不需要全部文档都解析,比如我们需要过滤某些文件不提取注释解析可通过dartdoc_options.yaml配置如下命令,其会过滤提取lib目录下的.dart文件,比如lib/main.dart文件就不会自动解析执行;

dartdoc:
  nodoc: [ 
    'lib/*.dart',
  ]

如果想要更多文件不解析提取注释可以 ** 通配符过滤:

dartdoc:
  nodoc: [ 
    'lib/widget/**',
  ]

目前还没有发现有一种方式可以实现只提取部分文件解析,只有通过过滤掉提取文件的部分实现;

更多配置条件转移至官方:github.com/dart-lang/d…

扩展

dartdoc 目前来看最大用途是生成接口文档,如果我们将定义好的interface最重要的部分提取生产代码文档,这样就可以做到代码版本和文档高度同步,减少协作沟通成本;此外dartdoc对于建设一个站点物料库也是有非常大的帮助,完全可以通过代码方式去维护一个物料站点;

猜你喜欢

转载自juejin.im/post/7123888029848043533