将 jacococli.jar 与多个类文件一起使用

Anu*_*sal 4 jacoco

在大多数情况下,我的类文件位于 tomcat 内的 2 个位置,分别为libclasses。现在,一旦.exec创建了文件,我需要提取一份引用位置classes和一些 jar 的报告lib,为此我使用以下命令

java -jar jacococli.jar report /local/jacoco.exec --html /jacocoReport/html --name MergeCode --classfiles /tomcat/webapps/<app>/WEB-INF/lib/new.jar /tomcat/webapps/<app>/WEB-INF/classes
Run Code Online (Sandbox Code Playgroud)

但它抛出错误,从错误看来,它正在考虑将--classfiles选项中的第二个位置/jar 作为执行文件。

[INFO] Loading execution data file /local/jacoco.exec.
[INFO] Loading execution data file /tomcat/webapps/<app>/WEB-INF/classes.
Exception in thread "main" java.io.FileNotFoundException: /tomcat/webapps/<app>/WEB-INF/classes (Is a directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.jacoco.cli.internal.core.tools.ExecFileLoader.load(ExecFileLoader.java:71)
at org.jacoco.cli.internal.commands.Report.loadExecutionData(Report.java:98)
at org.jacoco.cli.internal.commands.Report.execute(Report.java:82)
at org.jacoco.cli.internal.Main.execute(Main.java:89)
at org.jacoco.cli.internal.Main.main(Main.java:104)
Run Code Online (Sandbox Code Playgroud)

我尝试过在 jar 文件之前移动类,但例外情况不同

[INFO] Loading execution data file /local/jacoco.exec.
[INFO] Loading execution data file /tomcat/webapps/<app>/WEB-INF/lib/new.jar.
Exception in thread "main" java.io.IOException: Invalid execution data file.
at org.jacoco.cli.internal.core.data.ExecutionDataReader.read(ExecutionDataReader.java:89)
at org.jacoco.cli.internal.core.tools.ExecFileLoader.load(ExecFileLoader.java:59)
at org.jacoco.cli.internal.core.tools.ExecFileLoader.load(ExecFileLoader.java:73)
at org.jacoco.cli.internal.commands.Report.loadExecutionData(Report.java:98)
at org.jacoco.cli.internal.commands.Report.execute(Report.java:82)
at org.jacoco.cli.internal.Main.execute(Main.java:89)
at org.jacoco.cli.internal.Main.main(Main.java:104)
Run Code Online (Sandbox Code Playgroud)

为了

java -jar jacococli.jar classinfo /tomcat/webapps/<app>/WEB-INF/lib/new.jar /tomcat/webapps/<app>/WEB-INF/classes /tomcat/webapps/<app>/WEB-INF/lib/new1.jar
Run Code Online (Sandbox Code Playgroud)

多个文件工作正常,列出了classes文件夹中的所有类和文件夹中的 jar 文件集lib

http://www.jacoco.org/jacoco/trunk/doc/cli.html上的文档指出--classfiles报告可以有多个文件,但没有说明示例或分隔符。我尝试使用逗号、分号,但它不起作用 ' '[space] 与 classinfo 一起使用,所以我假设它也应该与 report 一起使用。

谷歌搜索也没有找到 jacococli.jar 的任何示例。

God*_*din 5

http://www.jacoco.org/jacoco/trunk/doc/cli.html上的文档指出报告的 --classfiles 可以有多个文件

这是错误的 - http://www.jacoco.org/jacoco/trunk/doc/cli.html上的文档实际上指出

某些参数可以指定多次以提供多个值。

--classfiles <path>
Run Code Online (Sandbox Code Playgroud)

可以按字面指定多次,即

--classfiles path1 --classfiles path2
Run Code Online (Sandbox Code Playgroud)

当您省略 prefix 时--classfiles,它会被解释为

<execfiles>
Run Code Online (Sandbox Code Playgroud)

给予例外

Exception in thread "main" java.io.FileNotFoundException: /tomcat/webapps/<app>/WEB-INF/classes (Is a directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.jacoco.cli.internal.core.tools.ExecFileLoader.load(ExecFileLoader.java:71)
Run Code Online (Sandbox Code Playgroud)

Exception in thread "main" java.io.IOException: Invalid execution data file.
at org.jacoco.cli.internal.core.data.ExecutionDataReader.read(ExecutionDataReader.java:89)
at org.jacoco.cli.internal.core.tools.ExecFileLoader.load(ExecFileLoader.java:59)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样 - 在一种情况下它不是文件,在另一种情况下它不是有效的执行文件。

' '[space] 与 classinfo 一起使用,所以我假设它也应该与 report 一起使用

reportclassinfo是两个不同的命令,并且具有不同的参数和所有后果。空间与命令一起工作classinfo,因为它允许多种规格

<classlocations>
Run Code Online (Sandbox Code Playgroud)

请注意,与命令相比,不需要指定前缀report