JSCover - 排除覆盖文件

JSCover - Excluding coverage files

目前正在尝试让 JSCover 排除用作库的 js 文件。我下面有一组 ant 脚本

  1. 启动 JSCover 服务器
  2. 运行 并生成 Json 报告
  3. 停止服务器

最后,我有一个 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 文件所在的位置。

我希望这对某人有所帮助