According to the latest code modify readme

Signed-off-by: leon <guocheng@kaihongdigi.com>
This commit is contained in:
leon 2022-06-29 14:37:53 +08:00
parent ee76c8f354
commit 581e01b42a
8 changed files with 103 additions and 105 deletions

53
FAQ.md
View File

@ -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的文件中包含/*,但工具不能解析,只能解析#后面的注释,导致执行用例失败。
问题解决:修改代码。
问题解决:修改代码。
## 已知Bug
### 1.Map<string,string>类型的函数转换框架代码失败
问题描述当待转换的ts文件中包含map数据类型且书写方式为Map<string,string>时,框架代码转换失败。
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<string,string>此种书写方式。
问题解决当ts文件中包含Map<string,string>书写方式的方法时,通过可执行文件方式进行框架代码转换之前安装@types/node依赖,即可转换成功,命令如下:
npm install @types/node -D
通过Intellij IDEA插件或VS Code插件转换时不支持ts文件包含Map<string,string>书写方式的方法,敬请期待后续更新解决方案。
### 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<string,string>此种书写方式。
### 3.array<Map<string,any>>与array<{[key:string]:any}>数据类型框架代码转换失败
问题描述当待转换的ts文件中包含array<map>数据类型时,框架代码转换失败,函数如下:
function fun1(v: Array<{ [key: string]: string }>): void;
function fun2(v: Array<Map<string, string>>): string;
问题定位当前代码不支持Map<string,string>此种书写方式。

View File

@ -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插件。其中的可执行文件可根据工具使用者的开发环境选择支持WindowsLinux和Mac。
使用者可以根据自己的需要选择合适的工具VS Code插件存放在以下路径
```
napi_generator/prebuilt
```
可执行文件与IntelliJ插件下载路径如下选择napi_generator_outputs.zip下载。
工具有三种类型分别是可执行文件、VS Code插件、IntelliJ插件。其中的可执行文件可根据工具使用者的开发环境选择支持WindowsLinux和Mac。可执行文件、IntelliJ插件、VS Code插件下载路径如下选择napi_generator_outputs.zip下载。
[下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/PPVcNMgVv/2022-06-13)

View File

@ -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)

View File

@ -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

View File

@ -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待支持特性
<a name="table143385853320"></a>
<table><thead align="left"><tr id="row53375863312"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p20331858193317"><a name="p20331858193317"></a><a name="p20331858193317"></a>类别</p>
</th>
<th class="cellrowborder" valign="top" width="40%" id="mcps1.2.3.1.2"><p id="p1133115820331"><a name="p1133115820331"></a><a name="p1133115820331"></a>待开发特性</p>
</th>
</tr>
</thead>
<tbody><tr id="row333115812331"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p2142111345714"><a name="p2142111345714"></a><a name="p2142111345714"></a>变量</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.2.3.1.2 "><a name="ul9264132010"></a><a name="ul9264132010"></a><ul id="ul9264132010"><li>支持ts接口文件中namespace域的boolean类型变量转换为对应C++类型变量</li><li>支持ts接口文件中namespace域的Enum_number/string变量类型转换为对应C++类型变量</li><li>支持ts接口文件中namespace域的回调函数类型变量 转换为对应C++ JSCallbackInfo-类型变量</li><li>支持ts接口文件中namespace域的map[string]any(string/number/bool/interface/map/array)变量入参一部分指定参数值,一部分定义参数类型变量</li><li>支持ts接口文件中namespace域的类型[]此方式声明的数组变量转换为对应C++类型变量</li><li>支持ts接口文件中namespace域的array<boolean>、array<map>、array<enum>类型转换变量为对应C++类型变量</li></ul>
</td>
</tr>
<tr id="row15331058133314"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p056093211916"><a name="p056093211916"></a><a name="p056093211916"></a>函数返回值</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul166113311811"></a><a name="ul166113311811"></a><ul id="ul166113311811"><li>函数返回值支持 enum_string、enum_number</li><li>函数返回值支持array<boolean>、array<map>、array<enum>,以及类型的嵌套</li></ul>
</td>
</tr>
<tr id="row334175803317"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p382391145710"><a name="p382391145710"></a><a name="p382391145710"></a>函数</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul334485413318"></a><a name="ul334485413318"></a><ul id="ul334485413318"><li>支持ts接口文件中namespace域的static函数转换为对应C++的函数</li><li>支持ts接口文件中namespace域的函数名称以$开头</li></ul>
</td>
</tr>
<tr id="row18711154213388"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p111921822185713"><a name="p111921822185713"></a><a name="p111921822185713"></a>文件</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul94024441879"></a><a name="ul94024441879"></a><ul id="ul94024441879"><li>命令行方式转换时支持多个文件路径,相互之间用空格分开</li><li>命令行方式转换时支持文件夹路径</li></ul>
</td>
</tr>
</tbody>
</table>
**表 2** 2022.9.30待支持特性
**表 1** 2022.9.30待支持特性
<a name="table143385853320"></a>
<table><thead align="left"><tr id="row53375863312"><th class="cellrowborder" valign="top" width="25%" id="mcps1.2.3.1.1"><p id="p20331858193317"><a name="p20331858193317"></a><a name="p20331858193317"></a>类别</p>
@ -54,7 +20,7 @@
</tr>
<tr id="row15331058133314"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p056093211916"><a name="p056093211916"></a><a name="p056093211916"></a>函数返回值</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul166113311811"></a><a name="ul166113311811"></a><ul id="ul166113311811"><li>函数返回值支持 多类型合集类型 NAPI实现 any类型</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul166113311811"></a><a name="ul166113311811"></a><ul id="ul166113311811"><li>接口函数返回值支持any类型转换为对应C++类型返回值</li></ul>
</td>
</tr>
<tr id="row334175803317"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p382391145710"><a name="p382391145710"></a><a name="p382391145710"></a>函数</p>
@ -64,7 +30,7 @@
</tr>
<tr id="row834358143319"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p1818191195713"><a name="p1818191195713"></a><a name="p1818191195713"></a>interface</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul4367144411512"></a><a name="ul4367144411512"></a><ul id="ul4367144411512"><li>支持ts接口文件中interface继承类方式的声明 对应的C++实现</li><li>支持ts接口文件中interface继承interface方式的声明 对应的C++实现</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul4367144411512"></a><a name="ul4367144411512"></a><ul id="ul4367144411512"><li>支持ts接口文件中interface继承类方式的声明 对应的C++实现</li><li>支持ts接口文件中interface继承interface方式的声明对应的C++实现</li></ul>
</td>
</tr>
<tr id="row119944512385"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p919862210573"><a name="p919862210573"></a><a name="p919862210573"></a>namespace</p>

View File

@ -16,17 +16,17 @@
</thead>
<tbody><tr id="row333115812331"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p2142111345714"><a name="p2142111345714"></a><a name="p2142111345714"></a>变量</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul9264132010"></a><a name="ul9264132010"></a><ul id="ul9264132010"><li>支持ts语言中string、number基础类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中interface复合类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中string、number、interface数组类型的变量/函数入参自动转换为C++类型</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul9264132010"></a><a name="ul9264132010"></a><ul id="ul9264132010"><li>支持ts语言中string、number、boolean基础类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中interface复合类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中enum复合类型变量/函数入参自动转换为C++类型</li><li>支持ts语言中string、number、boolean、enum、interface数组类型的变量/函数入参自动转换为C++类型且数组书写方式可以为array<>或[]两种</li><li>支持ts语言中string、number、boolean、array、map、interface的map类型的变量/函数入参自动转换为C++类型且map书写方式可以为{[key:string]:any}或Map<>两种</li></ul>
</td>
</tr>
<tr id="row15331058133314"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p056093211916"><a name="p056093211916"></a><a name="p056093211916"></a>函数返回值</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul166113311811"></a><a name="ul166113311811"></a><ul id="ul166113311811"><li>支持ts语言中void、string、number、boolean、interface 数组类型的函数返回值自动转换为C++类型</li><li>支持ts语言中string、number、interface、blean 数组类型的函数返回值自动转换为C++类型</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul166113311811"></a><a name="ul166113311811"></a><ul id="ul166113311811"><li>支持ts语言中void、string、number、boolean、interface的函数返回值自动转换为C++类型</li><li>支持ts语言中string、number、interface、boolean、enum数组类型的函数返回值自动转换为C++类型且数组书写方式可以为array<>或[]两种</li><li>支持ts语言中enumstring、number类型的函数返回值自动转换为C++类型</li></ul>
</td>
</tr>
<tr id="row334175803317"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p382391145710"><a name="p382391145710"></a><a name="p382391145710"></a>函数类型</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul334485413318"></a><a name="ul334485413318"></a><ul id="ul334485413318"><li>支持ts语言中返回值、callback类型的同步函数自动转换为C++类型</li><li>支持ts语言中callback、promise类型的异步函数自动转换为C++类型</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul334485413318"></a><a name="ul334485413318"></a><ul id="ul334485413318"><li>支持ts语言中返回值、callback类型的同步函数自动转换为C++类型</li><li>支持ts语言中callback、promise类型的异步函数自动转换为C++类型</li><li>支持ts接口文件中namespace域的static函数自动转换为对应C++的函数</li><li>支持ts接口文件中namespace域的以$开头的函数自动转换为对应C++的自动函数</li></ul>
</td>
</tr>
<tr id="row834358143319"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p1818191195713"><a name="p1818191195713"></a><a name="p1818191195713"></a>interface</p>
@ -41,7 +41,7 @@
</tr>
<tr id="row18711154213388"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p111921822185713"><a name="p111921822185713"></a><a name="p111921822185713"></a>文件</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul94024441879"></a><a name="ul94024441879"></a><ul id="ul94024441879"><li>支持ts文件中namespace数据类型转换为C++类型</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul94024441879"></a><a name="ul94024441879"></a><ul id="ul94024441879"><li>支持ts文件中namespace数据类型转换为C++类型</li><li>支持ts接口文件名格式如下ohos.A.B.C.d.ts的文件转换</li><li>命令行方式转换时支持多个文件路径,相互之间用英文逗号分开</li><li>命令行方式转换时支持指定路径下的ts文件转换</li></ul>
</td>
</tr>
</tbody>

View File

@ -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或修改用例。
绿色:用例执行成功。
## 相关仓
暂无

View File

@ -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或修改用例。
绿色:用例执行成功。
## 相关仓
暂无