下面我一一进行简单阐述。第一步:在linux上运行部署在linux上调用XcodeCoverage命令,会报错:
Out of memory!Reading tracefile Coverage.infolcov: ERROR: no valid records found in tracefile Coverage.infoReading tracefile Coverage.infolcov: ERROR: no valid records found in tracefile Coverage.infocat: /.xcodecoverageignore: No such file or directoryReading tracefile Coverage.infolcov: ERROR: no valid records found in tracefile Coverage.infoReading data file Coverage.infogenhtml: ERROR: no valid records found in tracefile Coverage.info直接给出解决方案:
# 修改/envcov.sh为 LCOV() { "${LCOV_PATH}/lcov" "$@" }# 修改/getcov为"${LCOV_PATH}/genhtml" --ignore-errors source --output-directory . "${LCOV_INFO}"简单解释就是执行lcov生成测试覆盖率.info文件的时候稍微有点改变,我还是很佩服XcodeCoverage这个项目的作者,只是改了一点点就支持linux执行。 第二步:接收并处理*.gcda文件其实这里更多的是依赖客户端同学的配合,他帮我实现了,从手机端生成*.gcda文件以后,并打了个以当时时间戳为名的zip包,然后直接post到我写的服务接口上。
客户端在传递*.zip包同时,在header里面增加了关于这个包的版本号,构件号,userid,和固件号等信息,我在后台解析以后统一存入一个表。 第三步:执行XcodeCoverage等一系列命令其实接收了*.gcda文件只是万里长征第一步,还需要将在mac slave上打包过程中的临时性文件,*.gcno文件转存到linux上,并且需要修改*.gcno的文件中的路径。这样才能执行XcodeCoverage命令。
在这个过程中,我踩过的坑有: