emma+linux代码覆盖率,如何使用emma统计代码执行覆盖率

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

使用 emma 2.1 (emma-stable-2.1.5320-lib)

1. 新建 /home/q/java/emmalib 目录, 将emma.jar 与 emma_ant.jar 放入

2. 复制 /server/bin/mobileserver/runServer.sh 到 runServer_emma.sh

修改启动语句

nohup java -Xmx1800M -Xms800m -Xbootclasspath/p:/home/q/java/emmalib/emma.jar -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -XX:+AggressiveOpts -XX:+UseParallelGC -server -classpath "$jarFile" com.qunar.common.mobileArc.MobileServer conf/TaLog.property conf/TripServer.property >> $LOG_HOME/error.log 2>&1 &

复制 /server/bin/mobileserver/stopServer.sh 到 stopServer_emma.sh

添加覆盖率导出命令

插入 emma 统计代码

使用root账号

1. 备份mobileserver.jar

cp /server/TripAssistant/mobile-server.jar $MOB_JAR_BAK/mobile-server.jar.{$timestamp}

2. 执行插入命令

java -cp /home/q/java/emmalib/emma.jar emma instr -m overwrite -cp mobile-server.jar -out coverage.em

输出如下:

EMMA: processing instrumentation path ...

EMMA: instrumentation path processed in 3117 ms

EMMA: [1000 class(es) instrumented, 126 resource(s) copied]

EMMA: metadata merged into [/server/TripAssistant/coverage.em]

3. 运行mobileserver runServer_emma.sh

sudo sh /server/bin/mobileserver/stopServer.sh && sudo sh /server/bin/mobileserver/runServer_emma.sh

在 /server/mobileserverlog/error.log中可见:

EMMA: collecting runtime coverage data ...

EMMA: runtime controller started on port [47653]

emma control 进程已启动

[root@l-wap4.beta.cn1.qunar.com /server/mobileserverlog]# netstat -na | grep 47653

tcp 0 0 0.0.0.0:47653 0.0.0.0:* LISTEN 20926/java

4. 执行 覆盖率文件导出命令

java -cp /home/q/java/emmalib/emma.jar emma ctl -connect localhost:47653 -command coverage.get,coverage.ec

可见输出:

EMMA: processing control command sequence ...

EMMA: executing [coverage.get (coverage.ec,true,true)] ...

EMMA: coverage.get: local copy of coverage data merged into [/server/TripAssistant/coverage.ec]

EMMA: coverage.get: command completed in 79 ms

EMMA: control command sequence complete

并且当前目录生成文件 coverage.ec

5. 生成报告

java -cp /home/q/java/emmalib/emma.jar emma report -r html -in coverage.em,coverage.ec

指定源代码生产覆盖率报告(需先上传源码)

java -cp /home/q/java/emmalib/emma.jar emma report -r html -in /server/TripAssistant/coverage.em,/server/TripAssistant/coverage.ec -Dreport.html.out.file=mycoverage/coverage.html -sp /home/liang.zhou/mob_code_dir/mobs_trunk/src/main/java

emma 方式启动 mobserver

==================================

1. 判断mobserver.jar size, 大于5M 为已插入过, 小于5M为未插入(需要执行插入)

2. 执行插入

3. 启动

4. 检查启动状态

47653 端口打开

mobileserver 进程打开

emma 方式停止 mobserver

==================================

1. 检查47653端口打开状态, 检查coverage.em是否存在

2. 导出覆盖率文件 coverage.ec, 备份coverage.em (加上时间戳)

3. 导出覆盖率HTML report (加上对应时间戳)

4. kill mobserver 进程

ls -lt mobile-server.jar

判断 $? == 0

判断mobile-server.jar size是否大于 5M

#!/bin/bash

function stop_mob_server(){

#!/bin/bash

function stop_mob_server(){

pid=`ps aux | grep MobileServer | grep -v grep | awk *

Unknown macro: {print $2}

*`

` kill -9 $

Unknown macro: {pid}

`

sleep 1

echo "Stop mobileserver success."

}

#判断 emma ctl 是否启动

port_check_result=`netstat -na | grep 47653 | awk *

Unknown macro: {print $1}

*`

if [ -z $

Unknown macro: {port_check_result}

]; then

echo "Emma ctl port 47653 is not LISTEN. Coverage.ec export operation aborted."

else

#emma ctl 为启动状态,导出 coverage.ec, 并备份至 /home/q/mobsrv_cov

if []

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值