Skip to content

Commit 57f3c80

Browse files
committed
Improve logging in check and reporting mojos.
1 parent 03a8f70 commit 57f3c80

File tree

2 files changed

+63
-29
lines changed

2 files changed

+63
-29
lines changed

src/main/java/org/scoverage/plugin/SCoverageCheckMojo.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,12 @@ public void execute() throws MojoFailureException
137137
File coverageFile = Serializer.coverageFile( dataDirectory );
138138
if ( !coverageFile.exists() )
139139
{
140-
getLog().info( "Scoverage data file does not exist. Skipping report generation" );
140+
getLog().info( "Scoverage data file does not exist. Skipping check" );
141141
return;
142142
}
143143
if ( !coverageFile.isFile() )
144144
{
145-
getLog().info( "Scoverage data file is a directory, not a file. Skipping report generation" );
145+
getLog().info( "Scoverage data file is a directory, not a file. Skipping check" );
146146
return;
147147
}
148148

@@ -155,31 +155,33 @@ public void execute() throws MojoFailureException
155155
int statementCount = coverage.statementCount();
156156
int invokedBranchesCount = coverage.invokedBranchesCount();
157157
int invokedStatementCount = coverage.invokedStatementCount();
158+
159+
getLog().info( String.format( "Statement coverage.: %s%%", coverage.statementCoverageFormatted() ) );
160+
getLog().info( String.format( "Branch coverage....: %s%%", coverage.branchCoverageFormatted() ) );
158161
getLog().debug( String.format( "invokedBranchesCount:%d / branchCount:%d, invokedStatementCount:%d / statementCount:%d",
159162
invokedBranchesCount, branchCount, invokedStatementCount, statementCount ) );
160163
if ( minimumCoverage > 0.0 )
161164
{
165+
String minimumCoverageFormatted = scoverage.DoubleFormat.twoFractionDigits( minimumCoverage );
162166
if ( is100( minimumCoverage ) && is100( coverage.statementCoveragePercent() ) )
163167
{
164-
getLog().info( "[scoverage] 100% Coverage !" );
168+
getLog().info( "100% Coverage !" );
165169
}
166-
else if ( minimumCoverage > coverage.statementCoveragePercent() )
170+
else if ( coverage.statementCoveragePercent() < minimumCoverage )
167171
{
168-
getLog().error( String.format( "[scoverage] Coverage is below minimum [%s%% < %.2f%%]",
169-
coverage.statementCoverageFormatted(), minimumCoverage ) );
172+
getLog().error( String.format( "Coverage is below minimum [%s%% < %s%%]",
173+
coverage.statementCoverageFormatted(), minimumCoverageFormatted ) );
170174
if ( failOnMinimumCoverage )
171175
{
172176
throw new MojoFailureException( "Coverage minimum was not reached" );
173177
}
174178
}
175179
else
176180
{
177-
getLog().info( String.format( "[scoverage] Coverage is above minimum [%s%% > %.2f%%]",
178-
coverage.statementCoverageFormatted(), minimumCoverage ) );
181+
getLog().info( String.format( "Coverage is above minimum [%s%% >= %s%%]",
182+
coverage.statementCoverageFormatted(), minimumCoverageFormatted ) );
179183
}
180184
}
181-
getLog().info( String.format( "[scoverage] All done. Coverage was [%s%%]",
182-
coverage.statementCoverageFormatted() ) );
183185

184186
long te = System.currentTimeMillis();
185187
getLog().debug( String.format( "Mojo execution time: %d ms", te - ts ) );

src/main/java/org/scoverage/plugin/SCoverageReportMojo.java

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import scala.xml.NodeSeq;
5353
import scala.xml.XML$;
5454

55+
import scoverage.Constants;
5556
import scoverage.Coverage;
5657
import scoverage.IOUtils;
5758
import 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

Comments
 (0)