文章目录

  • 简介
  • 使用场景
  • 使用方法
  • 平台及测试环境
  • 1、克隆&下载工具
  • 2、使用方法
  • 3、使用示例
  • 注意事项
  • 扩展
  • 参考来源
  • 推荐参考链接:
  • 问题答疑:


简介

针对运行时依赖的分析,我们开发了对应的C/C++三方库风险识别工具。
通过该工具可以扫描出三方库是否有对NDK,OpenGL等接口的依赖,以及是否有bionic的C库接口的依赖等。该工具可以让我们快速的对一个C/C++三方库进行风险识别。

使用场景

用于评估三方库移植到OpenHarmony上的风险,主要是不同系统上symbol不兼容问题。


使用方法

平台及测试环境

Windows平台WSL
环境搭建参考链接【wsl安装】【Windows平台】WSL安装

1、克隆&下载工具

cd ~
git clone https://gitee.com/han_jin_fei/e2e.git

e2e工具目录结构如下:

e2e
├── README.md
├── cmake_trans_gn
├── gn_call_cmake
├── napi_generator
├── ndk_gamekit_musl_spider
├── openGL_ES_spider
├── pdf_reader
├── thirdpart_discovery
├── thirdparty_compare
└── webrtc_spider

thirdparty_compare目录结构如下:

thirdparty_compare
├── README.md
├── __pycache__
├── black_list
├── black_list.py
├── config.py
├── data_summary.py
├── find_api_in_source.py
├── find_build_script.py
├── get_libs_from_dir.py
├── get_ndk_apis_from_excel.py
├── main.py
├── musl_syms
├── ndk_analyzer.py
├── tasks_pool.py
└── test

2、使用方法

进入本目录, 配置参数介绍如下:
-f 必选,输入存放三方库文件夹的上层路径
-b 可选,输入黑名单excel表格存放路径(默认./back_list)
-g 可选,输入灰名单excel表格存放路径(默认./grey_list)
-d 可选,文件输出路径(默认./out)

cd e2e/thirdparty_compare/
python main.py -f thirdPartLibDir -b blackListDir(optional) -g greyListDir(optional) -d outputPath(optional) 

对于分批次分量扫描的数据,因为需要先把origin_data数据合并后在进行数据的汇总处理,可以将多表的origin_data合并后使用data_summary.py处理。

python data_summary.py xlsx文件路径 项目名

3、使用示例

(1)以boost三方库为例,克隆三方库

cd ~
wget https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz

(2)创建三方库检测目录并解压到目录中
注意:经过检测的三方库项目中含有注释的文件代码会修改并删除注释代码,建议检测与实际项目目录分离

mkdir thirdPty_check
tar -zxvf boost_1_90_0.tar.gz -C thirdPty_check/

thirdPty_check目录结构如下:

thirdPty_check
└── boost_1_90_0

(3)解压到正式三方库存储目录,用于后续鸿蒙化移植
注意:目录必须势三方库目录上层目录才有效

mkdir thirdPty
tar -zxvf boost_1_90_0.tar.gz -C thirdPty/

(4)执行工具
注意:目录必须势三方库目录上层目录才有效

python ~/e2e/thirdparty_compare/main.py -f thirdPty_check/

执行结果如下:

Process boost_1_90_0 Takes Time 53.96175349499936 secondsmple/extension/test_example.cpp : 100.0%.4848484848%..
finished
造成库未通过的 API0 个
风险扫描通过 1 库, e2e构建融入工具支持 1 个, 占比 100.0%
buildScript  {'boost_1_90_0': ['cmake', 'make', 'configure', 'autoconf', 'automake']}
riskBuildDict {'Supted': [], 'NotSupt': []}
共风险扫描 1 库, 1 个库通过, 占比 100.0%,
共风险扫描 1 库, 0 个库未通过, 占比 0.0%,

(5)查看检测结果
注意:out文件夹默认在执行脚本当前目录中生成
统计结果在out目录thirdPty_risk_assessment.xlsx文件中:

out
└── thirdPty_risk_assessment.xlsx

注意事项

注意输入的三方库文件夹路径内部分含有注释的文件代码会修改并删除注释代码,建议运行前备份一份原文件。

扩展

用户自定义补充的黑名单表格 openharmony\E2E\thirdparty_compare\black_list\ 可以补充到这个文件夹中,表格目前仅支持.xlsx, .xls格式,表格内容需按默认格式填写。

参考来源

推荐参考链接:

1、C/C++三方库风险识别工具
2、harmony PC 开发者社区
3、【wsl安装】【Windows平台】WSL安装

问题答疑:

鸿蒙 PC 讨论广场

Logo

赋能鸿蒙PC开发者,共建全场景原生生态,共享一次开发多端部署创新价值。

更多推荐