gpt4 book ai didi

java - Jacoco 报告合并

转载 作者:行者123 更新时间:2023-12-01 11:21:20 25 4
gpt4 key购买 nike

我在远程 websphere 服务器上使用 Jacoco。我将其设置为 tcpsrver,并查询服务器以获取 jacoco.exec,使用此文件我可以为所有项目创建报告。我想要的是所有项目的单一报告。我已将每个报告添加到列表中,但是当我尝试创建单个报告时,我只能查看最后一个项目的统计信息。

每个项目都位于自己的文件夹中,每个文件夹都有自己的coveragereport。我是这样做的

File[] fList = directory.listFiles();

ReportGenerator rg = new ReportGenerator();

for(File file : fList)
{
if( file.getAbsolutePath().contains("BL") )
{
if( new File( file.getAbsolutePath() + "\\bin" ).isDirectory() )
{
rg = new ReportGenerator(file);
rg.setExecutionDataFile(directory);
rg.setClassesDirectory(file, "\\bin");
rg.setReportDirectory(directory);
rg.setTitle(file);
rg.create();
}
}
else
{
if( new File( file.getAbsolutePath() + "\\WebContent" ).isDirectory() )
{
rg = new ReportGenerator(file);
rg.setExecutionDataFile( directory );
rg.setClassesDirectory( file , "\\WebContent\\WEB-INF\\classes" );
rg.setReportDirectory(directory);
rg.setTitle(file);
rg.create();
}
}

现在我将它们全部添加到列表中:

loadExecutionData();

final IBundleCoverage bundleCoverage = analyzeStructure();

reportsList.add(this);

此时我想调用一个方法来生成报告,但是不起作用。到目前为止,我正在尝试使用 jacoco 网站上提供的示例。

http://www.eclemma.org/jacoco/trunk/doc/examples/java/ReportGenerator.java

我尝试做的是编辑 createReport 方法,创建一个 HTMLFormatter 和一个 IReportVisitor,循环遍历报告列表并添加visitInfovisitBundle 然后在最后调用 visitEnd() 将内容转储到文件中。问题是问题出在设置 visitInfovisitBundle 我覆盖了以前的报告。

我希望有人知道如何附加报告以制作一份更大的报告以供查看。

最佳答案

幸运的是,通过阅读和反复试验,我发现了如何以编程方式创建和合并 jacoco 代码覆盖率报告。

简单的方法是创建捆绑覆盖范围列表,创建一个组并将其全部放在 MultiReportVisitor

public void addToBundleCoverageList() throws IOException {

loadExecutionData();

bundleCoverage = analyzeStructure();

coverageList.add(bundleCoverage);

}

public void createCoverageList() throws IOException
{

for(int i=0; i<coverageList.size(); i++)
{
HTMLFormatter htmlFormatter = new HTMLFormatter();
IReportVisitor visitor = htmlFormatter
.createVisitor(new FileMultiReportOutput(reportDirectory));


visitor.visitInfo(execFileLoader.getSessionInfoStore().getInfos(),
execFileLoader.getExecutionDataStore().getContents());

visitors.add(visitor);

}

}

public void createReportFromList() throws IOException
{
MultiReportVisitor mrv = new MultiReportVisitor(visitors);
IReportGroupVisitor irgv = mrv.visitGroup("group");
for(int i=0; i<coverageList.size(); i++)
{
irgv.visitBundle(coverageList.get(i), indexHtml);
System.out.println("Processing: " + coverageList.get(i).getName());
}
mrv.visitEnd();
}

关于java - Jacoco 报告合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193491/

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