gpt4 book ai didi

来自 MATLAB 的 Java 代码覆盖率

转载 作者:行者123 更新时间:2023-12-04 04:54:19 25 4
gpt4 key购买 nike

我想测量从 MATLAB 运行的 Java 代码的代码覆盖率,最好使用 EclEmma/jacoco。不幸的是,MATLAB 有自己的自定义类加载器,并且不使用线程上下文类加载器,因此没有明显的方法可以让它进行动态覆盖检测。我曾尝试使用 jacoco 对我的 jar 进行离线检测,但我得到的只是一个空数据文件。

有没有人在从 MATLAB 运行时成功测量了 Java 代码覆盖率,如果是,您是如何做到的?

最佳答案

我实际上并没有这样做,但这听起来像使用 Matlab IDE 和 JaCoCo 应该可以实现即时检测。

EclEmma 专门用于从 Eclipse 运行东西;对于 Matlab,您可能希望单独使用 JaCoCo,甚至用于在线分析。也许通过使用它的 Java Agent ,您可以通过提供自定义 java.opts 来让 Matlab 加载到其嵌入式 JVM 中。启动目录中包含 -javaagent:... 的文件在 JaCoCo 中加载的选项,在该链接页面中进行了描述。

如果您将 Java 类放在 Matlab 的静态 Java 类路径上,而不是动态类路径,它们将通过常规 J​​ava 系统类加载器而不是自定义 Matlab 类加载器加载,并且应该可用于常规 Java 代码覆盖工具。这些自定义 Matlab 类加载器仅适用于“动态”Matlab Java 类路径上的类。您可以通过提供自定义 javaclasspath.txt 来做到这一点。文件在您的首选项或启动目录中或使用 ClassPath hacker工具。 (有关详细信息,请参阅 "Bringing Java Classes into Matlab Workspace"this other question about static vs dynamic Java classpath manipulation 。)

根据 JaCoCo 与 JVM 的 Hook 方式,您也可以将其指向自定义 Matlab 类加载器——它们是 URL 类加载器,您可以在 Matlab session 中使用 Java 反射为它们获取对象。 JaCoCo 文档(在“任务”中)似乎建议使用 JaCoCo API 而不是正常调用,可以让您使用自定义类加载器。

关于来自 MATLAB 的 Java 代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com