From 3051d763ae2ba87cf7ff4a4febece5cdb3efaaa9 Mon Sep 17 00:00:00 2001 From: pedrorijo91 Date: Wed, 8 Mar 2017 14:12:32 +0000 Subject: [PATCH] Improve error message for empty report files - just dealing with the simplest case for now: - reports with a single file - not looking into the content to filter the "useful" content only --- .../com/codacy/parsers/CoverageParser.scala | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/scala/com/codacy/parsers/CoverageParser.scala b/src/main/scala/com/codacy/parsers/CoverageParser.scala index 1664023..3e0c611 100644 --- a/src/main/scala/com/codacy/parsers/CoverageParser.scala +++ b/src/main/scala/com/codacy/parsers/CoverageParser.scala @@ -1,11 +1,9 @@ package com.codacy.parsers -import java.io.File - import com.codacy.api.{CoverageReport, Language} -import com.codacy.parsers.implementation.{JacocoParser, CoberturaParser} +import com.codacy.parsers.implementation.{CoberturaParser, JacocoParser} import com.codacy.parsers.util.XML - +import java.io.File import scala.util.Try import scala.xml.Elem @@ -30,12 +28,21 @@ trait XMLCoverageParser extends CoverageParser { object CoverageParserFactory { def withCoverageReport[A](language: Language.Value, rootProject: File, reportFile: File)(block: CoverageReport => A): Either[String, A] = { - create(language, rootProject, reportFile).map { - parser => - val report = parser.generateReport() - Right(block(report)) - }.getOrElse { - Left(s"no parser for $language") + val isEmptyReport = { + // just starting by detecting the simplest case: a single report file + Try(reportFile.isFile && reportFile.length() == 0).getOrElse(false) + } + + if (isEmptyReport) { + Left(s"report file is empty: ${reportFile.getAbsolutePath}") + } else { + create(language, rootProject, reportFile).map { + parser => + val report = parser.generateReport() + Right(block(report)) + }.getOrElse { + Left(s"no parser for $language") + } } }