2015-07-02 2 views
0

Я использую Jacoco на удаленном сервере веб-страниц. Я настроил его как tcpsrver, и я запрашиваю сервер, чтобы получить jacoco.exec, используя этот файл, я могу создавать отчеты для всех моих проектов. То, что я хочу, - это единый отчет для всех проектов. Я добавил каждый отчет в список, но когда я пытаюсь создать единый отчет, я могу просмотреть статистику только для последнего проекта.Сообщество Jacoco Слияние

Каждый проект находится в собственной папке, каждая папка получает свой собственный 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, цикл по списку отчетов и добавьте visitInfo и visitBundle затем в самом конце, вызов visitEnd() который сбрасывает содержимое файла. Проблема заключается в установке visitInfo и visitBundle Я перезаписываю предыдущий отчет.

Я надеюсь, что кто-то там знает, как добавить отчеты, чтобы сделать один более крупный отчет для просмотра.

ответ

1

К счастью через чтение и пробную версию и ошибку, я узнал, как программно создавать и объединять отчеты о покрытии кода 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(); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^