52
52
import scala .xml .NodeSeq ;
53
53
import scala .xml .XML$ ;
54
54
55
+ import scoverage .Constants ;
55
56
import scoverage .Coverage ;
56
57
import scoverage .IOUtils ;
57
58
import scoverage .Serializer ;
@@ -403,23 +404,19 @@ private void generateReports()
403
404
mkdirs ( xmlOutputDirectory );
404
405
405
406
File coverageFile = Serializer .coverageFile ( dataDirectory );
407
+ getLog ().info ( String .format ( "Reading scoverage instrumentation [%s]..." , coverageFile .getAbsolutePath () ) );
406
408
Coverage coverage = Serializer .deserialize ( coverageFile );
407
409
410
+ getLog ().info ( String .format ( "Reading scoverage measurements [%s*]..." ,
411
+ new File ( dataDirectory , Constants .MeasurementsPrefix () ).getAbsolutePath () ) );
408
412
File [] measurementFiles = IOUtils .findMeasurementFiles ( dataDirectory );
409
413
scala .collection .Set <Object > measurements = IOUtils .invoked ( Predef$ .MODULE$
410
414
.wrapRefArray ( measurementFiles ) );
411
415
coverage .apply ( measurements );
412
416
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." );
423
420
}
424
421
425
422
private void generateAggregatedReports ()
@@ -462,7 +459,7 @@ else if ( !module.getPackaging().equals( "pom" ) )
462
459
File coberturaXmlFile = new File ( moduleXmlOutputDirectory , "cobertura.xml" );
463
460
if ( coberturaXmlFile .isFile () )
464
461
{
465
- Elem xml = (Elem ) XML$ .MODULE$ .withSAXParser (saxParser ).loadFile ( coberturaXmlFile );
462
+ Elem xml = ( Elem ) XML$ .MODULE$ .withSAXParser ( saxParser ).loadFile ( coberturaXmlFile );
466
463
Node sources = xml .$bslash ( "sources" ).head ();
467
464
NodeSeq sourceSeq = sources .$bslash ( "source" );
468
465
Iterator <Node > it = sourceSeq .iterator ();
@@ -480,25 +477,60 @@ else if ( !module.getPackaging().equals( "pom" ) )
480
477
}
481
478
}
482
479
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
+
483
500
File topLevelModuleOutputDirectory = rebase ( outputDirectory , topLevelModule );
484
501
File topLevelModuleXmlOutputDirectory = rebase ( xmlOutputDirectory , topLevelModule );
485
502
486
503
mkdirs ( topLevelModuleOutputDirectory );
487
504
mkdirs ( topLevelModuleXmlOutputDirectory );
488
505
489
- Seq <File > sourceRootsAsScalaSeq = JavaConversions .asScalaBuffer ( sourceRoots );
490
-
491
506
Coverage coverage =
492
507
CoverageAggregator .aggregatedCoverage ( JavaConversions .asScalaBuffer ( scoverageXmlFiles ).toSeq () );
493
508
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 () ) );
496
527
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 () ) );
499
531
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 ( ) ) );
502
534
}
503
535
504
536
private void mkdirs ( File directory )
0 commit comments