java代码覆盖率过滤 java代码覆盖率测试工具

编程实现代码覆盖率及路径分析检测,C++, C#, Java, JavaScript(任选一种程序语言)

如果你采用源码插装的方式来做的话,需要对输入程序进行词法,语法分析建立语法分析树(有一些现成的工具如bison, antlr可以借助),通过语分析法分析树获取程序控制流关系,然后就可以对程序的基本块进行分析了。要考虑获取覆盖率和程序执行路径,需要对基本块做插装,利用插入的探针来对它们的执行情况做记录。

10年专注成都网站制作,企业网站制作,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于企业网站制作,高端网页制作,对护栏打桩机等多个方面,拥有丰富的网站运维经验。

java web怎么用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 修改启动语句。

使用 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 21

复制 /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

java代码覆盖率测试现在用什么工具?

你好,代码覆盖率测试,你可以试试Emma和Jacoco,eclipse中也有eclemma插件,这两种都是比较流行的工具

希望我的解答可以帮助你


网站标题:java代码覆盖率过滤 java代码覆盖率测试工具
转载注明:http://scyanting.com/article/ddojooo.html