27
27
import java .util .List ;
28
28
import java .util .Locale ;
29
29
import java .util .ResourceBundle ;
30
+ import java .util .concurrent .atomic .AtomicInteger ;
30
31
31
32
import org .apache .maven .doxia .module .xhtml .decoration .render .RenderingContext ;
32
33
import org .apache .maven .doxia .sink .Sink ;
46
47
47
48
import scala .Option ;
48
49
import scala .Tuple2 ;
49
- import scala .collection .JavaConverters ;
50
- import scala .collection .Seq ;
51
-
52
- import scoverage .Constants ;
53
- import scoverage .Coverage ;
54
- import scoverage .IOUtils ;
55
- import scoverage .Serializer ;
56
- import scoverage .report .CoberturaXmlWriter ;
57
- import scoverage .report .CoverageAggregator ;
58
- import scoverage .report .ScoverageHtmlWriter ;
59
- import scoverage .report .ScoverageXmlWriter ;
50
+ import scala .collection .immutable .Seq ;
51
+ import scala .jdk .javaapi .CollectionConverters ;
52
+
53
+ import scoverage .domain .Constants ;
54
+ import scoverage .domain .Coverage ;
55
+ import scoverage .domain .Statement ;
56
+ import scoverage .reporter .IOUtils ;
57
+ import scoverage .serialize .Serializer ;
58
+ import scoverage .reporter .CoberturaXmlWriter ;
59
+ import scoverage .reporter .CoverageAggregator ;
60
+ import scoverage .reporter .ScoverageHtmlWriter ;
61
+ import scoverage .reporter .ScoverageXmlWriter ;
60
62
61
63
/**
62
64
* Generates code coverage by unit tests report in forked {@code scoverage} life cycle.
@@ -419,13 +421,13 @@ private void generateReports()
419
421
420
422
File coverageFile = Serializer .coverageFile ( dataDirectory );
421
423
getLog ().info ( String .format ( "Reading scoverage instrumentation [%s]..." , coverageFile .getAbsolutePath () ) );
422
- Coverage coverage = Serializer .deserialize ( coverageFile );
424
+ Coverage coverage = Serializer .deserialize ( coverageFile , project . getBasedir () );
423
425
424
426
getLog ().info ( String .format ( "Reading scoverage measurements [%s*]..." ,
425
427
new File ( dataDirectory , Constants .MeasurementsPrefix () ).getAbsolutePath () ) );
426
428
List <File > measurementFiles = Arrays .asList ( IOUtils .findMeasurementFiles ( dataDirectory ) );
427
429
scala .collection .Set <Tuple2 <Object , String >> measurements =
428
- IOUtils .invoked ( JavaConverters . asScalaBuffer ( measurementFiles ) );
430
+ IOUtils .invoked ( CollectionConverters . asScala ( measurementFiles ). toSeq (), encoding );
429
431
coverage .apply ( measurements );
430
432
431
433
getLog ().info ( "Generating coverage reports..." );
@@ -436,6 +438,8 @@ private void generateReports()
436
438
private void generateAggregatedReports ()
437
439
throws MavenReportException
438
440
{
441
+ Coverage coverage = new Coverage ();
442
+ AtomicInteger id = new AtomicInteger ();
439
443
List <File > scoverageDataDirs = new ArrayList <File >();
440
444
List <File > sourceRoots = new ArrayList <File >();
441
445
MavenProject topLevelModule = null ;
@@ -451,6 +455,33 @@ else if ( !module.getPackaging().equals( "pom" ) )
451
455
if ( scoverageDataDir .isDirectory () )
452
456
{
453
457
scoverageDataDirs .add ( scoverageDataDir );
458
+ File coverageFile = Serializer .coverageFile (scoverageDataDir );
459
+ if (coverageFile .exists ()) {
460
+ Coverage subCoverage = Serializer .deserialize (coverageFile , module .getBasedir ());
461
+ List <File > measurementFiles = Arrays .asList ( IOUtils .findMeasurementFiles ( scoverageDataDir ) );
462
+ scala .collection .Set <Tuple2 <Object , String >> measurements =
463
+ IOUtils .invoked ( CollectionConverters .asScala ( measurementFiles ).toSeq (), encoding );
464
+ subCoverage .apply ( measurements );
465
+ subCoverage .statements ().foreach (statement -> {
466
+ int statementId = id .getAndIncrement ();
467
+ Statement copy = statement .copy (
468
+ statement .location (),
469
+ statementId ,
470
+ statement .start (),
471
+ statement .end (),
472
+ statement .line (),
473
+ statement .desc (),
474
+ statement .symbolName (),
475
+ statement .treeName (),
476
+ statement .branch (),
477
+ statement .count (),
478
+ statement .ignored (),
479
+ statement .tests ()
480
+ );
481
+ coverage .add (copy );
482
+ return null ;
483
+ });
484
+ }
454
485
455
486
File sourceRootsFile = new File ( scoverageDataDir , "source.roots" );
456
487
if ( sourceRootsFile .isFile () )
@@ -510,9 +541,6 @@ else if ( !module.getPackaging().equals( "pom" ) )
510
541
mkdirs ( topLevelModuleOutputDirectory );
511
542
mkdirs ( topLevelModuleXmlOutputDirectory );
512
543
513
- Coverage coverage =
514
- CoverageAggregator .aggregatedCoverage ( JavaConverters .asScalaBuffer ( scoverageDataDirs ).toSeq () );
515
-
516
544
getLog ().info ( "Generating coverage aggregated reports..." );
517
545
writeReports ( coverage , sourceRoots , topLevelModuleXmlOutputDirectory , topLevelModuleXmlOutputDirectory ,
518
546
topLevelModuleOutputDirectory );
@@ -522,13 +550,13 @@ else if ( !module.getPackaging().equals( "pom" ) )
522
550
private void writeReports ( Coverage coverage , List <File > sourceRoots , File coberturaXmlOutputDirectory ,
523
551
File scoverageXmlOutputDirectory , File scoverageHtmlOutputDirectory )
524
552
{
525
- Seq <File > sourceRootsAsScalaSeq = JavaConverters . asScalaBuffer ( sourceRoots );
553
+ Seq <File > sourceRootsAsScalaSeq = CollectionConverters . asScala ( sourceRoots ). toSeq ( );
526
554
527
- new CoberturaXmlWriter ( sourceRootsAsScalaSeq , coberturaXmlOutputDirectory ).write ( coverage );
555
+ new CoberturaXmlWriter ( sourceRootsAsScalaSeq , coberturaXmlOutputDirectory , Option .< String > apply ( encoding ) ).write ( coverage );
528
556
getLog ().info ( String .format ( "Written Cobertura XML report [%s]" ,
529
557
new File ( coberturaXmlOutputDirectory , "cobertura.xml" ).getAbsolutePath () ) );
530
558
531
- new ScoverageXmlWriter ( sourceRootsAsScalaSeq , scoverageXmlOutputDirectory , false ).write ( coverage );
559
+ new ScoverageXmlWriter ( sourceRootsAsScalaSeq , scoverageXmlOutputDirectory , false , Option .< String > apply ( encoding ) ).write ( coverage );
532
560
getLog ().info ( String .format ( "Written XML coverage report [%s]" ,
533
561
new File ( scoverageXmlOutputDirectory , "scoverage.xml" ).getAbsolutePath () ) );
534
562
0 commit comments