MATLAB的Java代码覆盖率

MATLAB的Java代码覆盖率,java,matlab,code-coverage,jacoco,eclemma,Java,Matlab,Code Coverage,Jacoco,Eclemma,我想测量从MATLAB运行的Java代码的代码覆盖率,最好使用EclEmma/jacoco。不幸的是,MATLAB有自己的自定义类加载器,并且没有使用线程上下文类加载器,因此没有明显的方法让它进行动态覆盖检测。我曾尝试使用jacoco对jar进行离线检测,但得到的只是一个空数据文件 有没有人在从MATLAB运行时成功地测量了Java代码的覆盖率,如果是这样的话,您是如何做到的?我还没有真正做到这一点,但这听起来像是在MatlabIDE和JaCoCo中可以实现的动态插装 EclEmma专门用于从E

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


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

我还没有真正做到这一点,但这听起来像是在MatlabIDE和JaCoCo中可以实现的动态插装

EclEmma专门用于从Eclipse运行东西;对于Matlab,您可能希望单独使用JaCoCo,甚至用于在线分析。可能通过使用its,您可以通过在您的启动目录中提供一个自定义的
java.opts
文件,将Matlab加载到其嵌入式JVM中,该文件包括
-javaagent:…
选项,以加载到JaCoCo中,如链接页面所述

如果您将Java类粘贴在Matlab的静态Java类路径上,而不是动态类路径上,那么它们将通过常规Java系统类加载器(而不是自定义Matlab类加载器)加载,并且应可用于常规Java代码覆盖工具。这些自定义Matlab类加载器仅适用于“动态”Matlab Java类路径上的类。您可以通过在pref或startup目录中提供一个自定义的
javaclasspath.txt
文件或使用一个工具来实现这一点。(有关详细信息,请参见和。)


根据JaCoCo如何钩住JVM,您可能也可以将其指向定制的Matlab类加载器——它们是URL类加载器,您可以在Matlab会话中使用Java反射为它们获取对象。JaCoCo文档(在“Mission”中)似乎建议使用JacoCoAPI,而不是普通调用,可以让您使用自定义类加载器。

我将这些“语法+拼写”编辑回滚到我的答案中。你说得对,“进入”可能比“进入”好。但“启动”是Matlab的拼写,而不是“启动”。在“选项”之前添加“,”是错误的。将“和”改为“他们”是错误的;这使它成为一个连续的句子,你至少需要一个分号。其余的变化是风格和格式问题,我更喜欢我的原始声音。我将把“改为”。我已经使用反射获得了MATLAB类加载器,但我认为没有任何方法可以为任意类加载器添加工具。我已经尝试过javaagent攻击,但我没有尝试将代码放在静态类路径上,所以我会在有机会的时候尝试一下。