Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d297ff2

Browse files
DReigadartfpessoa
authored andcommittedMay 8, 2017
Allow unknown languages (#54)
* Remove problematic dependency * Allow use of unkown languages * Bump codacy-api-scala and coverage-parser
1 parent 2e43b19 commit d297ff2

File tree

6 files changed

+27
-19
lines changed

6 files changed

+27
-19
lines changed
 

‎build.sbt‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ libraryDependencies ++= Seq(
2424
coverageParser,
2525
scopt,
2626
log,
27-
playLog,
2827
raptureJsonPlay,
2928
scalaTest
3029
)

‎project/Dependencies.scala‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ import sbt._
22

33
object Dependencies {
44

5-
lazy val codacyScalaApi = "com.codacy" %% "codacy-api-scala" % "2.0.4"
6-
lazy val coverageParser = "com.codacy" %% "coverage-parser" % "1.1.9"
5+
lazy val codacyScalaApi = "com.codacy" %% "codacy-api-scala" % "3.0.1"
6+
lazy val coverageParser = "com.codacy" %% "coverage-parser" % "2.0.0"
77
lazy val scopt = "com.github.scopt" %% "scopt" % "3.3.0"
88
lazy val log = "ch.qos.logback" % "logback-classic" % "1.2.1"
9-
lazy val playLog = "com.typesafe.play" % "play-logback_2.11" % "2.5.12"
10-
lazy val raptureJsonPlay = "com.propensive" %% "rapture-json-play" % "2.0.0-M7"
9+
lazy val raptureJsonPlay = "com.propensive" %% "rapture-json-play" % "2.0.0-M7"
1110

1211
lazy val scalaTest = "org.scalatest" %% "scalatest" % "2.2.4" % "test"
1312

‎src/main/resources/logback-test.xml‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<configuration>
22

3-
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel"/>
4-
53
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
64
<encoder>
75
<pattern>%date %-16coloredLevel %-10.-10logger %message %n</pattern>

‎src/main/scala/com/codacy/CodacyCoverageReporter.scala‎

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.codacy
22

33
import java.io.File
44
import java.net.URL
5+
56
import ch.qos.logback.classic.{Level, Logger}
67
import com.codacy.api.client.{CodacyClient, FailedResponse, SuccessfulResponse}
78
import com.codacy.api.helpers.FileHelper
@@ -10,10 +11,11 @@ import com.codacy.api.{CoverageFileReport, CoverageReport, Language}
1011
import com.codacy.parsers.CoverageParserFactory
1112
import com.codacy.transformation.PathPrefixer
1213
import org.slf4j.LoggerFactory
14+
import rapture.json.jsonBackends.play._
1315
import rapture.json.{Json, Serializer}
14-
import scopt.{OptionParser, Read}
16+
import scopt.OptionParser
17+
1518
import scala.util.Try
16-
import rapture.json.jsonBackends.play._
1719

1820
object CodacyCoverageReporter {
1921

@@ -25,16 +27,19 @@ object CodacyCoverageReporter {
2527
logger
2628
}
2729

28-
case class Config(language: Language.Value = Language.Python,
30+
case class Config(languageStr: String = Language.Python.toString,
31+
forceLanguage: Boolean = false,
2932
projectToken: String = getProjectToken,
3033
coverageReport: File = new File("coverage.xml"),
3134
codacyApiBaseUrl: String = getApiBaseUrl,
3235
prefix: String = "",
3336
debug: Boolean = false,
34-
commitUUID: Option[String] = commitUUIDOpt)
37+
commitUUID: Option[String] = commitUUIDOpt) {
3538

36-
implicit def languageRead: Read[Language.Value] = Read.reads { (s: String) =>
37-
Language.withName(s)
39+
lazy val language: Language.Value =
40+
Language.values.find(_.toString == languageStr).getOrElse(Language.NotDefined)
41+
42+
lazy val hasKnownLanguage: Boolean = language != Language.NotDefined
3843
}
3944

4045
private def getApiBaseUrl: String = {
@@ -71,6 +76,9 @@ object CodacyCoverageReporter {
7176
logger.error("Maybe you forgot the http:// or https:// ?")
7277
}
7378

79+
case Some(config) if !config.hasKnownLanguage && !config.forceLanguage =>
80+
logger.error(s"Invalid language ${config.languageStr}")
81+
7482
case Some(config) if config.projectToken.trim.nonEmpty =>
7583
if (config.debug) {
7684
logger.setLevel(Level.DEBUG)
@@ -88,9 +96,12 @@ object CodacyCoverageReporter {
8896
def buildParser: OptionParser[Config] = {
8997
new scopt.OptionParser[Config]("codacy-coverage-reporter") {
9098
head("codacy-coverage-reporter", getClass.getPackage.getImplementationVersion)
91-
opt[Language.Value]('l', "language").required().action { (x, c) =>
92-
c.copy(language = x)
99+
opt[String]('l', "language").required().action { (x, c) =>
100+
c.copy(languageStr = x)
93101
}.text("your project language")
102+
opt[Unit]('f', "forceLanguage").optional().hidden().action { (_, c) =>
103+
c.copy(forceLanguage = true)
104+
}
94105
opt[String]('t', "projectToken").optional().action { (x, c) =>
95106
c.copy(projectToken = x)
96107
}.text("your project API token")
@@ -127,15 +138,15 @@ object CodacyCoverageReporter {
127138
val codacyReportFile = new File(codacyReportFilename)
128139

129140
logger.debug(report.toString)
130-
implicit val s3 = implicitly[Serializer[CoverageFileReport,Json]]
141+
implicit val s3 = implicitly[Serializer[CoverageFileReport, Json]]
131142
FileHelper.writeJsonToFile(codacyReportFile, report)
132143

133144
val codacyClient = new CodacyClient(Some(config.codacyApiBaseUrl), projectToken = Some(projectToken))
134145
val coverageServices = new CoverageServices(codacyClient)
135146

136147
logger.info(s"Uploading coverage data...")
137148

138-
coverageServices.sendReport(commitUUID, config.language, report) match {
149+
coverageServices.sendReport(commitUUID, config.languageStr, report) match {
139150
case SuccessfulResponse(value) =>
140151
Right(s"Coverage data uploaded. $value")
141152
case FailedResponse(message) =>

‎src/test/scala/com/codacy/CodacyCoverageReporterTest.scala‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ class CodacyCoverageReporterTest extends FlatSpec with Matchers {
1515

1616
val args = Array("-l", "Scala", "-r", "coverage.xml")
1717

18-
val config = com.codacy.CodacyCoverageReporter.Config(Language.Scala,
18+
val config = com.codacy.CodacyCoverageReporter.Config(Language.Scala.toString,
19+
false,
1920
projToken,
2021
coverageFile,
2122
apiBaseUrl,

‎src/test/scala/com/codacy/transformation/PathPrefixerTest.scala‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import scala.collection.mutable.Stack
77

88
class PathPrefixerTest extends FlatSpec with Matchers {
99

10-
val report = CoverageReport(Language.Scala, 83, Seq(
10+
val report = CoverageReport(83, Seq(
1111
CoverageFileReport("Filename.scala", 24, Map()),
1212
CoverageFileReport("OtherFile.scala", 74, Map())
1313
))

0 commit comments

Comments
 (0)
Please sign in to comment.