JSCover - 排除覆盖文件
JSCover - Excluding coverage files
目前正在尝试让 JSCover 排除用作库的 js 文件。我下面有一组 ant 脚本
- 启动 JSCover 服务器
- 运行 并生成 Json 报告
- 停止服务器
最后,我有一个 shell 命令将 Json 文件转换为 LCov,这样我就可以将它与 sonarqube 一起使用。我也得到了 jscoverage.html 的报道,但它包括 web/ 下的每个文件,这是我不想要的。下图
下面的 Ant 脚本:
<target name="jstest-start">
<java jar=".../JSCover.jar" fork="true" spawn="true">
<arg value="-ws"/>
<arg value="--report-dir=coverage"/>
<arg value="--document-root=web"/>
<arg value="--port=8082"/>
<!-- Aim is to exclude folder js under web/ as it contains libraries, not source code. Currently does not work -->
<arg value="--no-instrument=web/js/"/>
<arg value="--no-instrument=js/"/>
</java>
<waitfor maxwait="5" maxwaitunit="second" checkevery="250" checkeveryunit="millisecond" timeoutproperty="failed">
<http url="http://localhost:8082/jscoverage.html"/>
</waitfor>
<fail if="failed"/>
</target>
<target name="jstest-run">
<exec dir="/usr/local/CI/phantomjs/bin/" executable="phantomjs" failonerror="true">
<arg line=".../run-jscover-qunit.js http://localhost:8082/index.html"/>
</exec>
</target>
<target name="jstest-stop">
<get src="http://localhost:8082/stop" dest="stop.txt" />
</target>
<target name="jstest" description="Run javascript tests">
<antcall target="jstest-start"/>
<antcall target="jstest-run"/>
<antcall target="jstest-stop"/>
</target>
我的文件夹结构是:
最后,我的声纳独立分析设置:
所以,似乎正在发生的事情是 JSCover 正在递归读取所有 js 文件,我无法阻止声纳或 ant。
任何人都可以解释一下吗?
<arg value="--no-instrument=/js/"/>
应该可以,并删除测试本身,
<arg value="--no-instrument=/test/"/>
网络服务器看到的路径,因此 'web' 中的前缀:
<arg value="--no-instrument=web/js/"/>
没有效果。
我已经通过更正生成 LCOV 报告的 shell 命令解决了我自己的问题。
java -cp JSCover.jar jscover.report.Main --format=LCOV /usr/local/CI/jenkins/workspace/PhantomJS/coverage/phantom/ /usr/local/CI/jenkins/workspace/PhantomJS/web/
在此之前,SRC-DIR 和 REPORT-DIR 是相同的,这是我的错误。据我所知,SRC-DIR 应该指向源文件夹,而 REPORT-DIR 应该指向 lcov 文件所在的位置。
我希望这对某人有所帮助
目前正在尝试让 JSCover 排除用作库的 js 文件。我下面有一组 ant 脚本
- 启动 JSCover 服务器
- 运行 并生成 Json 报告
- 停止服务器
最后,我有一个 shell 命令将 Json 文件转换为 LCov,这样我就可以将它与 sonarqube 一起使用。我也得到了 jscoverage.html 的报道,但它包括 web/ 下的每个文件,这是我不想要的。下图
下面的 Ant 脚本:
<target name="jstest-start">
<java jar=".../JSCover.jar" fork="true" spawn="true">
<arg value="-ws"/>
<arg value="--report-dir=coverage"/>
<arg value="--document-root=web"/>
<arg value="--port=8082"/>
<!-- Aim is to exclude folder js under web/ as it contains libraries, not source code. Currently does not work -->
<arg value="--no-instrument=web/js/"/>
<arg value="--no-instrument=js/"/>
</java>
<waitfor maxwait="5" maxwaitunit="second" checkevery="250" checkeveryunit="millisecond" timeoutproperty="failed">
<http url="http://localhost:8082/jscoverage.html"/>
</waitfor>
<fail if="failed"/>
</target>
<target name="jstest-run">
<exec dir="/usr/local/CI/phantomjs/bin/" executable="phantomjs" failonerror="true">
<arg line=".../run-jscover-qunit.js http://localhost:8082/index.html"/>
</exec>
</target>
<target name="jstest-stop">
<get src="http://localhost:8082/stop" dest="stop.txt" />
</target>
<target name="jstest" description="Run javascript tests">
<antcall target="jstest-start"/>
<antcall target="jstest-run"/>
<antcall target="jstest-stop"/>
</target>
我的文件夹结构是:
最后,我的声纳独立分析设置:
所以,似乎正在发生的事情是 JSCover 正在递归读取所有 js 文件,我无法阻止声纳或 ant。
任何人都可以解释一下吗?
<arg value="--no-instrument=/js/"/>
应该可以,并删除测试本身,
<arg value="--no-instrument=/test/"/>
网络服务器看到的路径,因此 'web' 中的前缀:
<arg value="--no-instrument=web/js/"/>
没有效果。
我已经通过更正生成 LCOV 报告的 shell 命令解决了我自己的问题。
java -cp JSCover.jar jscover.report.Main --format=LCOV /usr/local/CI/jenkins/workspace/PhantomJS/coverage/phantom/ /usr/local/CI/jenkins/workspace/PhantomJS/web/
在此之前,SRC-DIR 和 REPORT-DIR 是相同的,这是我的错误。据我所知,SRC-DIR 应该指向源文件夹,而 REPORT-DIR 应该指向 lcov 文件所在的位置。
我希望这对某人有所帮助