Skip to content

luacov-skynet is a simple coverage analyzer for skynet.

License

Notifications You must be signed in to change notification settings

mydevops/luacov-skynet

 
 

Repository files navigation

LuaCov - Skynet

Coverage analyzer for Skynet


概述

LuaCov-Skynet是专为Skynet框架定制的覆盖率分析库。

该项目是 LuaCov 的扩展。其中lcov格式的转换程序源自 luacov-reporter-lcov

LuaCov本身不支持多线程安全,每个actor分别输出不同的文件。文件的后缀使用.actor.{skynet.self()}来拼接。

覆盖率结果以lcov格式输出,可以通过 lcov 命令合并多个actor的结果。然后使用 diff-cover 进行增量覆盖率和页面生成。

下载安装

  1. 克隆项目后,编译src/fileutil.c生成fileutil.so库;
  2. 使用 cluacov-skynet;
  3. src/bin/luacov复制到系统的任意可执行路径;

使用说明

第一步: 导入模块

在所有需要检测覆盖率的Lua代码开头添加:

require("luacov.tick")

第二步: 生成原始覆盖率文件

只有创建$report_doing_file文件后才会收集覆盖率数据。 覆盖率数据在内存中,通过创建文件进行跨进程通信。

指定生成原始文件的文件标识名:

-- defaults.lua
report_get_file = "luacov.report"

在项目主目录下执行以下命令:

touch luacov.report

要重置执行结果的文件标识名:

-- defaults.lua
report_reset_file = "luacov.reset"

第三步:转换为 lcov 格式

执行以下命令自动在当前目录下生成lcov格式的文件:

luacov -r lcov -s luacov.stats.out.actor.1

其中.actor.是固定的,luacov.report.out取自default.luareportfile配置。

合并多个 actor 的 lcov 文件

使用以下命令合并多个actorlcov文件:

lcov -a luacov.stats.out.actor.1 -a luacov.stats.out.actor.2 -o luacov.report.out.lcov

创建$report_lock_file后,必须创建$luacov.report.reset来重置状态。

注意

文件监控逻辑跑在skynet的定时器上,目前是间隔1s,相关文件创建、删除操作保险来看要sleep 2s以上。

About

luacov-skynet is a simple coverage analyzer for skynet.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 92.9%
  • CSS 4.1%
  • JavaScript 2.6%
  • C 0.4%