5252import scala .xml .NodeSeq ;
5353import scala .xml .XML$ ;
5454
55+ import scoverage .Constants ;
5556import scoverage .Coverage ;
5657import scoverage .IOUtils ;
5758import scoverage .Serializer ;
@@ -403,23 +404,19 @@ private void generateReports()
403404 mkdirs ( xmlOutputDirectory );
404405
405406 File coverageFile = Serializer .coverageFile ( dataDirectory );
407+ getLog ().info ( String .format ( "Reading scoverage instrumentation [%s]..." , coverageFile .getAbsolutePath () ) );
406408 Coverage coverage = Serializer .deserialize ( coverageFile );
407409
410+ getLog ().info ( String .format ( "Reading scoverage measurements [%s*]..." ,
411+ new File ( dataDirectory , Constants .MeasurementsPrefix () ).getAbsolutePath () ) );
408412 File [] measurementFiles = IOUtils .findMeasurementFiles ( dataDirectory );
409413 scala .collection .Set <Object > measurements = IOUtils .invoked ( Predef$ .MODULE$
410414 .wrapRefArray ( measurementFiles ) );
411415 coverage .apply ( measurements );
412416
413- Seq <File > sourceRootsAsScalaSeq = JavaConversions .asScalaBuffer ( sourceRoots );
414-
415- getLog ().info ( "[scoverage] Generating cobertura XML report..." );
416- new CoberturaXmlWriter ( sourceRootsAsScalaSeq , xmlOutputDirectory ).write ( coverage );
417-
418- getLog ().info ( "[scoverage] Generating scoverage XML report..." );
419- new ScoverageXmlWriter ( sourceRootsAsScalaSeq , xmlOutputDirectory , false ).write ( coverage );
420-
421- getLog ().info ( "[scoverage] Generating scoverage HTML report..." );
422- new ScoverageHtmlWriter ( sourceRootsAsScalaSeq , outputDirectory , Option .<String >apply ( encoding ) ).write ( coverage );
417+ getLog ().info ( "Generating coverage reports..." );
418+ writeReports ( coverage , sourceRoots , xmlOutputDirectory , xmlOutputDirectory , outputDirectory );
419+ getLog ().info ( "Coverage reports completed." );
423420 }
424421
425422 private void generateAggregatedReports ()
@@ -462,7 +459,7 @@ else if ( !module.getPackaging().equals( "pom" ) )
462459 File coberturaXmlFile = new File ( moduleXmlOutputDirectory , "cobertura.xml" );
463460 if ( coberturaXmlFile .isFile () )
464461 {
465- Elem xml = (Elem ) XML$ .MODULE$ .withSAXParser (saxParser ).loadFile ( coberturaXmlFile );
462+ Elem xml = ( Elem ) XML$ .MODULE$ .withSAXParser ( saxParser ).loadFile ( coberturaXmlFile );
466463 Node sources = xml .$bslash ( "sources" ).head ();
467464 NodeSeq sourceSeq = sources .$bslash ( "source" );
468465 Iterator <Node > it = sourceSeq .iterator ();
@@ -480,25 +477,60 @@ else if ( !module.getPackaging().equals( "pom" ) )
480477 }
481478 }
482479
480+ /* Empty report must be generated or top-level site will contain invalid link to non-existent Scoverage report
481+ if ( scoverageXmlFiles.isEmpty() )
482+ {
483+ getLog().info( "No subproject data to aggregate, skipping SCoverage report generation" );
484+ return;
485+ }*/
486+
487+ if ( getLog ().isDebugEnabled () && scoverageXmlFiles .size () > 0 )
488+ {
489+ getLog ().debug ( String .format ( "Found %d subproject report files:" , scoverageXmlFiles .size () ) );
490+ for ( File file : scoverageXmlFiles )
491+ {
492+ getLog ().debug ( String .format ( "- %s" , file .getAbsolutePath () ) );
493+ }
494+ }
495+ else
496+ {
497+ getLog ().info ( String .format ( "Found %d subproject report files." , scoverageXmlFiles .size () ) );
498+ }
499+
483500 File topLevelModuleOutputDirectory = rebase ( outputDirectory , topLevelModule );
484501 File topLevelModuleXmlOutputDirectory = rebase ( xmlOutputDirectory , topLevelModule );
485502
486503 mkdirs ( topLevelModuleOutputDirectory );
487504 mkdirs ( topLevelModuleXmlOutputDirectory );
488505
489- Seq <File > sourceRootsAsScalaSeq = JavaConversions .asScalaBuffer ( sourceRoots );
490-
491506 Coverage coverage =
492507 CoverageAggregator .aggregatedCoverage ( JavaConversions .asScalaBuffer ( scoverageXmlFiles ).toSeq () );
493508
494- getLog ().info ( "[scoverage] Generating aggregated cobertura XML report..." );
495- new CoberturaXmlWriter ( sourceRootsAsScalaSeq , topLevelModuleXmlOutputDirectory ).write ( coverage );
509+ getLog ().info ( "Generating coverage aggregated reports..." );
510+ writeReports ( coverage , sourceRoots , topLevelModuleXmlOutputDirectory , topLevelModuleXmlOutputDirectory ,
511+ topLevelModuleOutputDirectory );
512+ getLog ().info ( "Coverage aggregated reports completed." );
513+ }
514+
515+ private void writeReports ( Coverage coverage , List <File > sourceRoots , File coberturaXmlOutputDirectory ,
516+ File scoverageXmlOutputDirectory , File scoverageHtmlOutputDirectory )
517+ {
518+ Seq <File > sourceRootsAsScalaSeq = JavaConversions .asScalaBuffer ( sourceRoots );
519+
520+ new CoberturaXmlWriter ( sourceRootsAsScalaSeq , coberturaXmlOutputDirectory ).write ( coverage );
521+ getLog ().info ( String .format ( "Written Cobertura XML report [%s]" ,
522+ new File ( coberturaXmlOutputDirectory , "cobertura.xml" ).getAbsolutePath () ) );
523+
524+ new ScoverageXmlWriter ( sourceRootsAsScalaSeq , scoverageXmlOutputDirectory , false ).write ( coverage );
525+ getLog ().info ( String .format ( "Written XML coverage report [%s]" ,
526+ new File ( scoverageXmlOutputDirectory , "scoverage.xml" ).getAbsolutePath () ) );
496527
497- getLog ().info ( "[scoverage] Generating aggregated scoverage XML report..." );
498- new ScoverageXmlWriter ( sourceRootsAsScalaSeq , topLevelModuleXmlOutputDirectory , false ).write ( coverage );
528+ new ScoverageHtmlWriter ( sourceRootsAsScalaSeq , scoverageHtmlOutputDirectory , Option .<String >apply ( encoding ) ).write ( coverage );
529+ getLog ().info ( String .format ( "Written HTML coverage report [%s]" ,
530+ new File ( scoverageHtmlOutputDirectory , "index.html" ).getAbsolutePath () ) );
499531
500- getLog ().info ( "[scoverage] Generating aggregated scoverage HTML report..." );
501- new ScoverageHtmlWriter ( sourceRootsAsScalaSeq , topLevelModuleOutputDirectory , Option .< String > apply ( encoding ) ). write ( coverage );
532+ getLog ().info ( String . format ( "Statement coverage.: %s%%" , coverage . statementCoverageFormatted () ) );
533+ getLog (). info ( String . format ( "Branch coverage....: %s%%" , coverage . branchCoverageFormatted ( ) ) );
502534 }
503535
504536 private void mkdirs ( File directory )
0 commit comments