From 581e01b42a7b4996f7c989214acc7cee1377710a Mon Sep 17 00:00:00 2001 From: leon Date: Wed, 29 Jun 2022 14:37:53 +0800 Subject: [PATCH] According to the latest code modify readme Signed-off-by: leon --- FAQ.md | 53 +++++++++++++++++++++++++---- README_zh.md | 29 +++++++--------- docs/DEVELOP_ZH.md | 4 +-- docs/INSTRUCTION_ZH.md | 15 +++----- docs/ROADMAP_ZH.md | 42 +++-------------------- release-notes/napi_generator-1.0.md | 8 ++--- test/storytest/README_ZH.md | 37 ++++++++++++-------- test/unittest/README_ZH.md | 20 +++++------ 8 files changed, 103 insertions(+), 105 deletions(-) diff --git a/FAQ.md b/FAQ.md index 1185f047..7c7b3eef 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,6 +1,8 @@ # NAPI框架生成工具 问题反馈 -## 1. pkg cmd_gen.js 生成.exe程序失败 +## 问题反馈 + +### 1. pkg cmd_gen.js 生成.exe程序失败 问题描述:在Linux命令行入口安装辅助工具过程中,按文档步骤,在使用pkg命令打包生成.exe文件时,发生报错。 @@ -23,7 +25,7 @@ -## 2. 用可执行程序生成c++代码失败 +### 2. 用可执行程序生成c++代码失败 问题描述:在windows下用cmd_gen-win.exe生成对应的c++代码报错。 @@ -35,7 +37,7 @@ cmd_gen-win.exe @ohos.power.d.ts -## 3.未安装系统依赖插件,运行测试用例失败 +### 3.未安装系统依赖插件,运行测试用例失败 问题描述:首次运行UT或ST用例失败。 @@ -67,7 +69,7 @@ "webpack-cli": "^4.9.1" } -## 4.未安装rewire插件,运行测试用例失败 +### 4.未安装rewire插件,运行测试用例失败 问题描述:readme中插件全部安装完成后,执行测试用例失败。 @@ -86,7 +88,7 @@ 安装插件之后,再次运行用例即可。 -## 5.后缀为gyp文件中包含/*注释,执行用例失败 +### 5.后缀为gyp文件中包含/*注释,执行用例失败 问题描述:代码中后缀为gyp的文件中包含/*注释,执行用例失败。 @@ -98,4 +100,43 @@ 问题定位:代码中后缀为gyp的文件中包含/*,但工具不能解析,只能解析#后面的注释,导致执行用例失败。 -问题解决:修改代码。 \ No newline at end of file +问题解决:修改代码。 + +## 已知Bug + +### 1.Map类型的函数转换框架代码失败 + +问题描述:当待转换的ts文件中包含map数据类型,且书写方式为Map时,框架代码转换失败。 + + 2022-6-28 9:16:42 [ERR] @ohos.napitest.d.ts (17,20): Cannot find name 'Map'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + 2022-6-28 9:16:42 [INF] fail@ohos.napitest.d.ts (17,20): Cannot find name 'Map'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later. + +问题定位:当前代码不支持Map此种书写方式。 + +问题解决:当ts文件中包含Map书写方式的方法时,通过可执行文件方式进行框架代码转换之前安装@types/node依赖,即可转换成功,命令如下: + + npm install @types/node -D + +通过Intellij IDEA插件或VS Code插件转换时,不支持ts文件包含Map书写方式的方法,敬请期待后续更新解决方案。 + +### 2.枚举值中包含左移右移等符号的函数框架代码转换失败 + +问题描述:当待转换的ts文件中包含enum数据类型,且enum中包含左移右移时,框架代码转换失败,函数如下: + + enum HiTraceFlag { + DEFAULT = 0, + DONOT_CREATE_SPAN = 1 << 1, + TP_INFO = 1 << 2, + } + function begin(name: string, flags: HiTraceFlag): HiTraceFlag; + +问题定位:当前代码不支持Map此种书写方式。 + +### 3.array>与array<{[key:string]:any}>数据类型框架代码转换失败 + +问题描述:当待转换的ts文件中包含array数据类型时,框架代码转换失败,函数如下: + + function fun1(v: Array<{ [key: string]: string }>): void; + function fun2(v: Array>): string; + +问题定位:当前代码不支持Map此种书写方式。 \ No newline at end of file diff --git a/README_zh.md b/README_zh.md index 0cb39ff2..ba6a9716 100755 --- a/README_zh.md +++ b/README_zh.md @@ -11,18 +11,21 @@ ├── napi_generator # NAPI框架代码生成工具 │ ├── docs # 工具说明、版本规划 + │ ├── examples # 工具需要的文件样例 │ ├── figures # 图片资源文件 - │ ├── prebuilt # VS Code插件文件 + │ ├── napi_IntelliJ_plugin # Intellij IDEA插件代码 + │ ├── napi_vs_plugin # VS Code插件代码 │ ├── release-notes # 发布说明 │ ├── src # 工具源码 - | | ├── gen - │ | | ├── analyze # 解析器 - │ | | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等 + │ │ ├── gen + │ │ | ├── analyze # 解析器 + │ │ | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等 │ │ | |── generate # 生成器 │ │ | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等 - | | └── generator #IntelliJ IDEA插件代码 - | ├── examples # 工具需要的文件样例 - │ └── README # 工具使用指导 + │ │ └── generator #IntelliJ IDEA插件代码 + │ ├── test # UT、ST测试 + │ ├── FAQ # NAPI框架工具问题反馈 + │ └── README # 工具使用指导 ## 约束 系统:建议Ubuntu 20.04或者Windows 10 @@ -33,7 +36,7 @@ ### 使用对象 -工具的使用者 +系统开发者 ### 使用场景 @@ -42,15 +45,7 @@ ### 工具使用 -工具有三种类型,分别是可执行文件、VS Code插件、IntelliJ插件。其中的可执行文件可根据工具使用者的开发环境选择,支持Windows,Linux和Mac。 - -使用者可以根据自己的需要选择合适的工具,VS Code插件存放在以下路径: - -``` -napi_generator/prebuilt -``` - -可执行文件与IntelliJ插件下载路径如下,选择napi_generator_outputs.zip下载。 +工具有三种类型,分别是可执行文件、VS Code插件、IntelliJ插件。其中的可执行文件可根据工具使用者的开发环境选择,支持Windows,Linux和Mac。可执行文件、IntelliJ插件、VS Code插件下载路径如下,选择napi_generator_outputs.zip下载。 [下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/PPVcNMgVv/2022-06-13) diff --git a/docs/DEVELOP_ZH.md b/docs/DEVELOP_ZH.md index 84d42ba6..467eb5fc 100755 --- a/docs/DEVELOP_ZH.md +++ b/docs/DEVELOP_ZH.md @@ -161,7 +161,7 @@ #### 开发步骤 -1.将napi_generator目录下的可执行文件分别放置在napi_generator\src\generator\resources\cmds目录下对应系统的文件夹下。 +1.将napi_generator目录下的可执行文件分别放置在napi_generator/src/generator/resources/cmds目录下对应系统的文件夹下。 2.通过IntelliJ IDEA打开napi_generator/src/generator目录下的代码。 @@ -185,7 +185,7 @@ ## 工具测试 进行工具二次开发后,本地可进行单元测试、story特性测试确保工具的可用性。左键单击以下链接了解详情: - [单元测试](https://gitee.com/openharmony/napi_generator/blob/master/test/unittest/README_ZH%20.md) + [单元测试](https://gitee.com/openharmony/napi_generator/blob/master/test/unittest/README_ZH.md) [story测试](https://gitee.com/openharmony/napi_generator/blob/master/test/storytest/README_ZH.md) diff --git a/docs/INSTRUCTION_ZH.md b/docs/INSTRUCTION_ZH.md index 6988c19b..b6d337aa 100755 --- a/docs/INSTRUCTION_ZH.md +++ b/docs/INSTRUCTION_ZH.md @@ -1,23 +1,17 @@ # NAPI框架生成工具使用说明 ## 简介 -NAPI框架生成工具支持三种入口,分别是可执行程序、VS Code插件、IntelliJ插件,使用者可以根据自己的需要选择合适的工具,VS Code插件存放在以下路径: - -``` -napi_generator/prebuilt -``` - -可执行文件与IntelliJ插件下载路径如下,选择napi_generator_outputs.zip下载。 +NAPI框架生成工具支持三种入口,分别是可执行程序、VS Code插件、IntelliJ插件,使用者可以根据自己的需要选择合适的工具。可执行文件、IntelliJ插件、VS Code插件下载路径如下,选择napi_generator_outputs.zip下载。 [下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/PPVcNMgVv/2022-06-13) 下载文件说明如下: - - │ | ├── generator.jar # IntelliJ插件 + │ │ |── generator.jar # IntelliJ插件 + │ │ |── gnapi-0.0.1.vsix # VS Code插件 │ │ |── napi_generator-linux # Linux可执行程序 │ │ |── napi_generator-win.exe # Windows可执行程序 - | | └── napi_generator-macos # Mac可执行程序 + │ │ └── napi_generator-macos # Mac可执行程序 ## 工具介绍 @@ -128,7 +122,6 @@ napi_generator的可执行程序方式和插件方式都具有预检查的功能 3)多级模块.d.ts文件转换。.../gen目录下存在@ohos.napi_.test.A.d.ts文件。命令执行成功后,gen目录中成功生成对应的文件,与指定路径下.d.ts文件转换效果图一致,转换命令如下: - E:\napi_generator\napi_generator-master\examples\gen>napi_generator-win.exe -f @ohos.napi_.test.A.d.ts #### Mac diff --git a/docs/ROADMAP_ZH.md b/docs/ROADMAP_ZH.md index c6db533a..6720cbbb 100644 --- a/docs/ROADMAP_ZH.md +++ b/docs/ROADMAP_ZH.md @@ -1,44 +1,10 @@ # NAPI框架代码生成工具 ## 版本规划 -2022.6.30提供1.1版本 丰富工具支持的能力,包括支持枚举、map等数据类型的转换,具体特性见表1。 -2022.9.30提供1.2版本 基本完善工具C++支持能力,2022.9.30前完成迭代并提交代码,具体特性见表2。 +2022.9.30提供1.2版本 基本完善工具C++支持能力,2022.9.30前完成迭代并提交代码,具体特性见表1。 - -**表 1** 2022.6.30待支持特性 - - - - - - - - - - - - - - - - - - - -

类别

-

待开发特性

-

变量

-
  • 支持ts接口文件中namespace域的boolean类型变量转换为对应C++类型变量
  • 支持ts接口文件中namespace域的Enum_number/string变量类型转换为对应C++类型变量
  • 支持ts接口文件中namespace域的回调函数类型变量 转换为对应C++ JSCallbackInfo-类型变量
  • 支持ts接口文件中namespace域的map[string]any(string/number/bool/interface/map/array)变量入参一部分指定参数值,一部分定义参数类型变量
  • 支持ts接口文件中namespace域的类型[]此方式声明的数组变量转换为对应C++类型变量
  • 支持ts接口文件中namespace域的array、array、array类型转换变量为对应C++类型变量
-

函数返回值

-
  • 函数返回值支持 enum_string、enum_number
  • 函数返回值支持array、array、array,以及类型的嵌套
-

函数

-
  • 支持ts接口文件中namespace域的static函数转换为对应C++的函数
  • 支持ts接口文件中namespace域的函数名称以$开头
-

文件

-
  • 命令行方式转换时支持多个文件路径,相互之间用空格分开
  • 命令行方式转换时支持文件夹路径
-
- -**表 2** 2022.9.30待支持特性 +**表 1** 2022.9.30待支持特性 - - - - - - diff --git a/test/storytest/README_ZH.md b/test/storytest/README_ZH.md index 53eb4faa..1f76a202 100755 --- a/test/storytest/README_ZH.md +++ b/test/storytest/README_ZH.md @@ -6,18 +6,28 @@ ## 目录 - ├── napi_generator # NAPI框架代码生成工具 - │ ├── src # 工具源码 - │ ├── ... # 其他文件夹 - │ ├── test # 测试用例 - | | ├── storytest # story测试代码 - │ | | ├── test_direct # 同步直接返回函数用例 - │ | | ├── test_interface # ts文件输入interface测试用例 - │ | | ├── test_namespace # ts文件输入namespace测试用例 - │ | | ├── test_number # ts文件输入number测试用例 - │ | | ├── test_string # ts文件输入string测试用例 - │ | | └── test.py # 用例执行脚本 - | | └── unittest # 单元测试用例 + ├── napi_generator # NAPI框架代码生成工具 + │ ├── ... # 其他文件夹 + │ ├── test # 测试用例 + │ | ├── ... # 其他文件夹 + │ | ├── storytest # story测试代码 + │ | | ├── test_$ # ts文件输入以$开头的函数测试用例 + │ | | ├── test_[] # ts文件输入[]格式数组测试用例 + │ | | ├── test_array # ts文件输入array<>格式数组测试用例 + │ | | ├── test_bool # ts文件输入boolean测试用例 + │ | | ├── test_direct # 同步直接返回函数用例 + │ | | ├── test_enum # ts文件输入enum测试用例 + │ | | ├── test_enum_interface # ts文件输入interface嵌套enum测试用例 + │ | | ├── test_interface # ts文件输入interface测试用例 + │ | | ├── test_interface_no_name # ts文件输入interface测试用例 + │ | | ├── test_map # ts文件输入map测试用例 + │ | | ├── test_namespace # ts文件输入namespace测试用例 + │ | | ├── test_number # ts文件输入number测试用例 + │ | | ├── test_static # ts文件输入static的函数测试用例 + │ | | ├── test_string # ts文件输入string测试用例 + │ | | ├── basic.d.ts # 基础函数模板 + │ | | ├── README_ZH.md # 测试用例使用指导 + │ | | └── test.py # 用例执行脚本 ## 软件环境准备 @@ -25,7 +35,6 @@ 依赖版本:python3.8 - 步骤一: napi_generator目录下安装以下依赖: @@ -70,14 +79,12 @@ napi_generator/src目录下安装以下依赖: python test/storytest/test.py test_interface - ## 查看结果 红色:用例执行失败,代表修改的代码有bug或者用例的输出发生变化,需要修复bug或修改用例。 绿色:用例执行成功。 - ## 相关仓 暂无 diff --git a/test/unittest/README_ZH.md b/test/unittest/README_ZH.md index fa6fe68d..77496692 100755 --- a/test/unittest/README_ZH.md +++ b/test/unittest/README_ZH.md @@ -6,19 +6,20 @@ ## 目录 - ├── napi_generator # NAPI框架代码生成工具 - │ ├── src # 工具源码 - │ ├── ... # 其他文件夹 - │ ├── test # 测试用例 - | | ├── unittest # 单元测试代码 + ├── napi_generator # NAPI框架代码生成工具 + │ ├── src # 工具源码 + │ ├── ... # 其他文件夹 + │ ├── test # 测试用例 + │ | ├── ... # 其他文件夹 + │ | ├── unittest # 单元测试代码 │ | | ├── analyze.test.js #执行gen/analyze目录下函数测试用例 │ | | ├── basic.d.ts* #基础函数模板 │ | | ├── extend.test.js* #执行gen/extend目录下函数测试用例 │ | | ├── generate.test.js* #执行gen/generate目录下函数测试用例 │ | | ├── napi_generator.test.js* #执行全部测试用例 │ | | ├── '@ohos.input_sample.d.ts'* #接口、函数等定义模板 - │ | | └── tools.test.js* #执行gen/tools目录下函数测试用例 - | | └── storytest # 功能测试用例 + │ | | ├── README_ZH.md # 测试用例使用指导 + │ | | └── tools.test.js* #执行gen/tools目录下函数测试用例 ## 软件环境准备 @@ -26,7 +27,6 @@ 依赖版本:python3.8 - 步骤一: napi_generator目录下安装以下依赖: @@ -47,8 +47,6 @@ napi_generator/src目录下安装以下依赖: npm i - - ## 使用说明 进入napi_generator/目录: @@ -61,14 +59,12 @@ napi_generator/src目录下安装以下依赖: npx mocha test/unittest/analyze.test.js - ## 查看结果 红色:用例执行失败,代表修改的代码有bug或者用例的输出发生变化,需要修复bug或修改用例。 绿色:用例执行成功。 - ## 相关仓 暂无 -- Gitee

类别

@@ -54,7 +20,7 @@

函数返回值

  • 函数返回值支持 多类型合集类型 NAPI实现 any类型
+
  • 接口函数返回值支持any类型转换为对应C++类型返回值

函数

@@ -64,7 +30,7 @@

interface

  • 支持ts接口文件中interface继承类方式的声明 对应的C++实现
  • 支持ts接口文件中interface继承interface方式的声明 对应的C++实现
+
  • 支持ts接口文件中interface继承类方式的声明 对应的C++实现
  • 支持ts接口文件中interface继承interface方式的声明对应的C++实现

namespace

diff --git a/release-notes/napi_generator-1.0.md b/release-notes/napi_generator-1.0.md index 9accf942..6f328533 100644 --- a/release-notes/napi_generator-1.0.md +++ b/release-notes/napi_generator-1.0.md @@ -16,17 +16,17 @@

变量

  • 支持ts语言中string、number基础类型的变量/函数入参自动转换为C++类型
  • 支持ts语言中interface复合类型的变量/函数入参自动转换为C++类型
  • 支持ts语言中string、number、interface数组类型的变量/函数入参自动转换为C++类型
+
  • 支持ts语言中string、number、boolean基础类型的变量/函数入参自动转换为C++类型
  • 支持ts语言中interface复合类型的变量/函数入参自动转换为C++类型
  • 支持ts语言中enum复合类型变量/函数入参自动转换为C++类型
  • 支持ts语言中string、number、boolean、enum、interface数组类型的变量/函数入参自动转换为C++类型,且数组书写方式可以为array<>或[]两种
  • 支持ts语言中string、number、boolean、array、map、interface的map类型的变量/函数入参自动转换为C++类型,且map书写方式可以为{[key:string]:any}或Map<>两种

函数返回值

  • 支持ts语言中void、string、number、boolean、interface 数组类型的函数返回值自动转换为C++类型
  • 支持ts语言中string、number、interface、blean 数组类型的函数返回值自动转换为C++类型
+
  • 支持ts语言中void、string、number、boolean、interface的函数返回值自动转换为C++类型
  • 支持ts语言中string、number、interface、boolean、enum数组类型的函数返回值自动转换为C++类型,且数组书写方式可以为array<>或[]两种
  • 支持ts语言中enum(string、number)类型的函数返回值自动转换为C++类型

函数类型

  • 支持ts语言中返回值、callback类型的同步函数自动转换为C++类型
  • 支持ts语言中callback、promise类型的异步函数自动转换为C++类型
+
  • 支持ts语言中返回值、callback类型的同步函数自动转换为C++类型
  • 支持ts语言中callback、promise类型的异步函数自动转换为C++类型
  • 支持ts接口文件中namespace域的static函数自动转换为对应C++的函数
  • 支持ts接口文件中namespace域的以$开头的函数自动转换为对应C++的自动函数

interface

@@ -41,7 +41,7 @@

文件

  • 支持ts文件中namespace数据类型转换为C++类型
+
  • 支持ts文件中namespace数据类型转换为C++类型
  • 支持ts接口文件名格式如下ohos.A.B.C.d.ts的文件转换
  • 命令行方式转换时支持多个文件路径,相互之间用英文逗号分开
  • 命令行方式转换时支持指定路径下的ts文件转换