Skip to content

Commit 0fbb7f1

Browse files
committed
updates
1 parent 88ec7b5 commit 0fbb7f1

File tree

3 files changed

+66
-8
lines changed

3 files changed

+66
-8
lines changed

Diff for: README.MD

+65-7
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,80 @@
1-
# Solidity 合约覆盖率测试工具
1+
# Solidity 合约覆盖率生成方法
22

33
## 原理
44

55
1. 用 solidity-coverage 的 api 在合约代码中插桩,在经 solidity-compiler 编译成字节码
6-
2. 部署插桩后的合约到内置的 ganache 进程中,内置的 ganache 可以记录插桩后合约的代码执行明细
6+
2. 部署插桩后的合约到内置的 ganache 中,ganache 会记录插桩后合约的代码执行明细
7+
3. 启动 express 服务, 将 / 反向代理到 ganache, 当收到 /coverage.x 请求后调 solidity-coverage 的 api 生成报告,重定向到报告页面
78

89

9-
## 服务端功能
10+
## 效果图
1011

11-
1. 服务端是一个
12+
![pic01](./pics/pic01.png "pics/pic01.png")
1213

1314

14-
## 合约部署
15+
## 生成步骤
1516

17+
1. 从 yongyang2021/solidity-coverage-example 镜像启动服务端
1618

17-
## 服务端部署
19+
服务端监听的端口默认是 3000, 可以通过 PORT 环境变量修改
1820

21+
可以映射配置文件 ganache.json 到 /app/ganache.json 覆盖 ganache 的配置
1922

20-
## 合约部署
23+
如下 ganache.json 文件配置了一个开发者账号和数据持久化目录
2124

2225

26+
```json
27+
{
28+
"accounts": [
29+
{
30+
"secretKey": "*****",
31+
"balance": "0x845951614014880000000"
32+
}
33+
],
34+
"db_path": "/app/database"
35+
}
36+
```
37+
38+
39+
docker-compose.yml 文件:
40+
41+
```yml
42+
version: '2'
43+
services:
44+
cov_server:
45+
image: 'yongyang2021/solidity-coverage-example:v0.0.4'
46+
ports:
47+
- 3001:3001
48+
volumes:
49+
- ganache.json:/app/ganache.json
50+
- database:/app/database
51+
environment:
52+
- PORT=3001
53+
```
54+
55+
2. 利用 docker 容器部署合约到刚才启动的服务端
56+
57+
1. 配置环境变量 COV_HOST=192.168.1.1, 这里不建议填写 localhost,因为 docker 容器默认不是 host 模式
58+
2. 配置环境变量 COV_PORT=3001, 这里对应服务端的 IP
59+
3. 配置环境变量 COV_KEY=**, 填写开发者账号
60+
4. 映射 local 文件夹到容器中,接受部署合约完成后的地址
61+
5. 映射 artifacts 接收 abi 文件
62+
63+
docker-compose.yml 文件:
64+
65+
```yml
66+
version: '2'
67+
services:
68+
cov_client:
69+
image: 'yongyang2021/solidity-coverage-example:v0.0.4'
70+
volumes:
71+
- local:/app/local
72+
- artifacts:/app/artifacts
73+
environment:
74+
- COV_HOST=192.168.1.1
75+
- COV_PORT=3001
76+
- COV_KEY=**
77+
entrypoint: 'npm run cov-deploy'
78+
```
79+
80+
3. 第2步的容器停止后,完成后访问 http://localhost:3001/coverage.x,可以看到合约的构造器已经被调用过一次

Diff for: cov/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const ganache = require('ganache-cli')
66

77
const { createProxyMiddleware } = require('http-proxy-middleware');
88

9-
const ganacheCfg = process.env.GANACHE_CONFIG
9+
const ganacheCfg = process.env.GANACHE_CONFIG || 'ganache.json'
1010

1111
let apiCfg = {}
1212

Diff for: pics/pic01.png

239 KB
Loading

0 commit comments

Comments
 (0)