我正在启动一个项目,需要为覆盖率目的(变量定义使用等)对Java应用程序进行仪器化。 它必须向应用程序添加跟踪语句和一些逻辑,并可能删除语句。
我已经搜索了如何仪器化Java代码的方法,而我总是找到有关字节码仪器化的信息。
我的问题是:这是唯一仪器化Java应用程序的方法吗?还有其他方法可以做到这一点吗?与其他方法相比,字节码仪器化有什么优势?
我可能会使用字节码解决方案,但我想知道其他方法的问题(如果有的话),以便做出明确的决定。
谢谢!
我正在启动一个项目,需要为覆盖率目的(变量定义使用等)对Java应用程序进行仪器化。 它必须向应用程序添加跟踪语句和一些逻辑,并可能删除语句。
我已经搜索了如何仪器化Java代码的方法,而我总是找到有关字节码仪器化的信息。
我的问题是:这是唯一仪器化Java应用程序的方法吗?还有其他方法可以做到这一点吗?与其他方法相比,字节码仪器化有什么优势?
我可能会使用字节码解决方案,但我想知道其他方法的问题(如果有的话),以便做出明确的决定。
谢谢!
请查看我的使用程序转换引擎构建覆盖工具的论文。这种方法的优点是可以用于任意编程语言。此外,它以程序员所见的方式查看源代码,而不是作为编译后的字节码(随着泛型变得越来越复杂,并被磨成更细的字节码,通过检查字节码来理解源代码变得更加困难)。
值得注意的是,程序转换概括了面向方面的编程。