我正在开发一个Java代码分析作为Eclipse插件,它将使用JDT输出Java代码的执行路径和代码覆盖率信息。
如何提取执行期间执行哪些行的信息以确定执行路径和代码覆盖率?
我正在研究 JDT CORE 和 JDT DEBUG ,但到目前为止,我无法找到一种方法来跟踪哪些行被执行。
答案 0 :(得分:1)
(这个问题似乎非常广泛,所以我提供了同样广泛的答案,希望你发现它很有用。)
EclEmma是Eclipse的Java Code Coverage插件。它使用名为JaCoCo的库来提供代码覆盖率。检查该开源项目的源代码可能是了解如何实现自己的分析器的最佳方式(或者可能反过来改进EclEmma)。
JaCoCo的源存储库位于github:https://github.com/jacoco/jacoco,但CoreTutorial
可能是一个很好的起点。
本教程的一个关键部分是:
// Together with the original class definition we can calculate coverage
// information:
final CoverageBuilder coverageBuilder = new CoverageBuilder();
final Analyzer analyzer = new Analyzer(executionData, coverageBuilder);
analyzer.analyzeClass(getTargetClass(targetName), targetName);
稍后打印出一些行信息:
printCounter("lines", cc.getLineCounter());