Я перехожу с Эммы. в JaCoCo, и пока все работает нормально. Одна из частей, с которой я борюсь, - это часть кода, который EMMA использует набор файлов jar из некоторых подпроектов, которые зависят от основного проекта.
В EMMA код выглядел так:
InstrProcessor processor = InstrProcessor.create();
processor.setInstrPath(getFilePaths(jars), false);
processor.setOutMode(OutMode.OUT_MODE_OVERWRITE);
processor.setMetaOutFile(metadataFile.getAbsolutePath());
processor.setMetaOutMerge(merge);
processor.run();
Самым близким, что я нашел для JaCoCo, был класс Instrumenter, но, похоже, он не принимает файлы только входные потоки. В JavaDoc нет никаких намеков на его работу. Любые идеи?
Цитата JavaDoc метода org.jacoco.core.instr.Instrumenter#instrumentAll
:
Creates a instrumented version of the given resource depending on its type. Class files and the content of archive files are instrumented. All other files are copied without modification.
т.е.
try (
FileInputStream in = new FileInputStream("input.jar");
FileOutputStream out = new FileOutputStream("output.jar");
) {
instrumenter.instrumentAll(in, out, "input.jar");
}
и именно так реализована инструментация файлов JAR в Интерфейс командной строки JaCoCo.