构建的 JAR 的代码覆盖率
Code coverage of built JAR
是否可以为属于我的 class 路径的 JAR 文件生成代码覆盖率报告?
jar
已经编译并作为库添加到 Gradle 项目。
jar
的测试代码存储在项目中。
我认为你可以像这样为自己定制一个解决方案:
- 你做你的"coverage data collection"
- 你export那个结果;例如转换为 CSV 数据
- 您编写了一小段代码来获取所有 classes/packages 任何 JAR 存档的名称
- 然后您只需从使用步骤 3 生成的 CSV 文件中提取这些行。
鉴于您的评论:您似乎不明白 "coverage" 为您做了什么。关键是:你启动了一个 JVM; JVM 运行s 一些代码。在这样做的同时,收集了有关使用了哪些classes/methods、采用的路径等的数据。
换句话说:
- 你 驱动 JVM 到 运行 东西
- 覆盖框架记录采用了哪些代码路径
该过程中没有任何内容与特定 JAR 相关。 Coverage 只检查 哪个 代码是 运行ning。映射到“代码来自的地方是不同方面。
Is there an ability to generate code coverage reports for added to classpath jar?
应该有。不过,您并没有说出您使用的是哪种代码覆盖工具。从问题中的标签看来,您正在使用 JaCoCo.
代码覆盖通常经历 3 个阶段:
- Instrumentation:您 运行 针对已编译 类 的代码覆盖工具,它创建了 类 的检测版本。从概念上讲,检测的 类 在每一行都注入了代码,使计数器递增。这就是跟踪访问过哪条线路的方式。
- 检测类的代码执行:代码是运行,计数器收集哪些行已被访问。
- Reporting:计数器收集的数据被读取并用于生成代码覆盖率报告。在此阶段,您需要源代码,以便代码覆盖工具可以将代码覆盖结果与实际源相匹配。
在您的场景中,您可以解压缩您想要对其进行代码覆盖的 JAR,检测其中的 类 并将这些 类 压缩到另一个 JAR。将原始 JAR 替换为经过检测的 JAR 类.
这是一个非标准的工作流程,在 Ant/Maven 中可能不容易配置,但您可以通过编程方式进行配置,请参阅 API and API examples
是否可以为属于我的 class 路径的 JAR 文件生成代码覆盖率报告?
jar
已经编译并作为库添加到 Gradle 项目。
jar
的测试代码存储在项目中。
我认为你可以像这样为自己定制一个解决方案:
- 你做你的"coverage data collection"
- 你export那个结果;例如转换为 CSV 数据
- 您编写了一小段代码来获取所有 classes/packages 任何 JAR 存档的名称
- 然后您只需从使用步骤 3 生成的 CSV 文件中提取这些行。
鉴于您的评论:您似乎不明白 "coverage" 为您做了什么。关键是:你启动了一个 JVM; JVM 运行s 一些代码。在这样做的同时,收集了有关使用了哪些classes/methods、采用的路径等的数据。
换句话说:
- 你 驱动 JVM 到 运行 东西
- 覆盖框架记录采用了哪些代码路径
该过程中没有任何内容与特定 JAR 相关。 Coverage 只检查 哪个 代码是 运行ning。映射到“代码来自的地方是不同方面。
Is there an ability to generate code coverage reports for added to classpath jar?
应该有。不过,您并没有说出您使用的是哪种代码覆盖工具。从问题中的标签看来,您正在使用 JaCoCo.
代码覆盖通常经历 3 个阶段:
- Instrumentation:您 运行 针对已编译 类 的代码覆盖工具,它创建了 类 的检测版本。从概念上讲,检测的 类 在每一行都注入了代码,使计数器递增。这就是跟踪访问过哪条线路的方式。
- 检测类的代码执行:代码是运行,计数器收集哪些行已被访问。
- Reporting:计数器收集的数据被读取并用于生成代码覆盖率报告。在此阶段,您需要源代码,以便代码覆盖工具可以将代码覆盖结果与实际源相匹配。
在您的场景中,您可以解压缩您想要对其进行代码覆盖的 JAR,检测其中的 类 并将这些 类 压缩到另一个 JAR。将原始 JAR 替换为经过检测的 JAR 类.
这是一个非标准的工作流程,在 Ant/Maven 中可能不容易配置,但您可以通过编程方式进行配置,请参阅 API and API examples