原理很简单,利用debug.sethook可以得到代码执行情况,然后再用phpunit来生成html版本的覆盖率报告出来
直接上两个代码首先是CodeCoverage.lua
module("CodeCoverage", package.seeall)
local mResult = nil
local mRunninng = false
local mPrefix = nil
local mPrefixLen = 0
local function execCallback(event, line)
if line == 0 or event ~= "line" or mResult == nil then
return
end
local source = debug.getinfo(2, "S").source
if mPrefixLen > 0 then
local prefix = source:sub(1, mPrefixLen)
if prefix ~= mPrefix then
return
end
if mPrefix == "@" then
source = source:sub(2)
end
end
if mResult[source] == nil then
mResult[source] = {
[line] = 1
}
elseif mResult[source][line] == nil then
mResult[source][line] = 1
end
end
function start(prefix)
if mRunning then
return
end
debug.sethook(execCallback, 'l')
mPre