Skip to content

Commit 7b4f88d

Browse files
committed
Merge pull request #120 from pdalpra/code-cleanup
Code cleanup
2 parents 7dd8a84 + 3f400ce commit 7b4f88d

File tree

7 files changed

+90
-100
lines changed

7 files changed

+90
-100
lines changed

Diff for: build.sbt

+13-24
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,32 @@ name := "sbt-scoverage"
22

33
organization := "org.scoverage"
44

5-
scalaVersion := "2.10.5"
6-
75
scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-encoding", "utf8")
86

97
sbtPlugin := true
108

11-
resolvers <++= isSnapshot(
12-
if (_)
13-
Seq(Resolver.mavenLocal, Resolver.sonatypeRepo("snapshots"))
14-
else
15-
Seq()
16-
)
17-
18-
libraryDependencies ++= Seq(
19-
"org.scoverage" %% "scalac-scoverage-plugin" % "1.1.0"
20-
)
21-
22-
publishTo := {
23-
if (isSnapshot.value) {
24-
Some(Resolver.sbtPluginRepo("snapshots"))
25-
} else {
26-
Some(Resolver.sbtPluginRepo("releases"))
27-
}
9+
resolvers ++= {
10+
if(isSnapshot.value) Seq(Resolver.mavenLocal, Resolver.sonatypeRepo("snapshots"))
11+
else Seq.empty
2812
}
2913

30-
publishMavenStyle := false
14+
libraryDependencies += "org.scoverage" %% "scalac-scoverage-plugin" % "1.1.0"
15+
16+
publishTo := Some(
17+
if (isSnapshot.value) Resolver.sbtPluginRepo("snapshots")
18+
else Resolver.sbtPluginRepo("releases")
19+
)
3120

3221
publishArtifact in Test := false
3322

3423
licenses +=("Apache-2.0", url("http://www.apache.org/licenses/LICENSE-2.0.html"))
3524

3625
ScriptedPlugin.scriptedSettings
3726

38-
scriptedLaunchOpts := {
39-
scriptedLaunchOpts.value ++
40-
Seq("-Xmx1024M", "-XX:MaxPermSize=256M", "-Dplugin.version=" + version.value)
41-
}
27+
scriptedLaunchOpts ++= Seq(
28+
"-Xmx1024M", "-XX:MaxPermSize=256M",
29+
"-Dplugin.version=" + version.value
30+
)
4231

4332
releaseSettings
4433

Diff for: project/plugins.sbt

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
resolvers += "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/"
2-
3-
libraryDependencies <+= sbtVersion(v => "org.scala-sbt" % "scripted-plugin" % v)
1+
libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value
42

53
addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3")
64

Diff for: src/main/scala/scoverage/ScoverageKeys.scala

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package scoverage
2+
3+
import sbt._
4+
5+
object ScoverageKeys {
6+
lazy val coverage = taskKey[Unit]("enable compiled code with instrumentation")
7+
lazy val coverageOff = taskKey[Unit]("disable compiled code with instrumentation")
8+
lazy val coverageReport = taskKey[Unit]("run report generation")
9+
lazy val coverageAggregate = taskKey[Unit]("aggregate reports from subprojects")
10+
lazy val coverageExcludedPackages = settingKey[String]("regex for excluded packages")
11+
lazy val coverageExcludedFiles = settingKey[String]("regex for excluded file paths")
12+
lazy val coverageMinimum = settingKey[Double]("scoverage-minimum-coverage")
13+
lazy val coverageFailOnMinimum = settingKey[Boolean]("if coverage is less than this value then fail build")
14+
lazy val coverageHighlighting = settingKey[Boolean]("enables range positioning for highlighting")
15+
lazy val coverageOutputCobertura = settingKey[Boolean]("enables cobertura XML report generation")
16+
lazy val coverageOutputXML = settingKey[Boolean]("enables xml report generation")
17+
lazy val coverageOutputHTML = settingKey[Boolean]("enables html report generation")
18+
lazy val coverageOutputDebug = settingKey[Boolean]("turn on the debug report")
19+
lazy val coverageCleanSubprojectFiles = settingKey[Boolean]("removes subproject data after an aggregation")
20+
}

Diff for: src/main/scala/scoverage/ScoverageSbtPlugin.scala

+50-67
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,22 @@ import sbt.Keys._
44
import sbt._
55
import scoverage.report.{CoverageAggregator, CoberturaXmlWriter, ScoverageHtmlWriter, ScoverageXmlWriter}
66

7-
object ScoverageSbtPlugin extends ScoverageSbtPlugin
8-
9-
class ScoverageSbtPlugin extends sbt.AutoPlugin {
7+
object ScoverageSbtPlugin extends AutoPlugin {
108

119
val OrgScoverage = "org.scoverage"
1210
val ScalacRuntimeArtifact = "scalac-scoverage-runtime"
1311
val ScalacPluginArtifact = "scalac-scoverage-plugin"
1412
val ScoverageVersion = "1.1.0"
15-
16-
object ScoverageKeys {
17-
lazy val coverage = taskKey[Unit]("enable compiled code with instrumentation")
18-
lazy val coverageOff = taskKey[Unit]("disable compiled code with instrumentation")
19-
lazy val coverageReport = taskKey[Unit]("run report generation")
20-
lazy val coverageAggregate = taskKey[Unit]("aggregate reports from subprojects")
21-
val coverageExcludedPackages = settingKey[String]("regex for excluded packages")
22-
val coverageExcludedFiles = settingKey[String]("regex for excluded file paths")
23-
val coverageMinimum = settingKey[Double]("scoverage-minimum-coverage")
24-
val coverageFailOnMinimum = settingKey[Boolean]("if coverage is less than this value then fail build")
25-
val coverageHighlighting = settingKey[Boolean]("enables range positioning for highlighting")
26-
val coverageOutputCobertura = settingKey[Boolean]("enables cobertura XML report generation")
27-
val coverageOutputXML = settingKey[Boolean]("enables xml report generation")
28-
val coverageOutputHTML = settingKey[Boolean]("enables html report generation")
29-
val coverageOutputDebug = settingKey[Boolean]("turn on the debug report")
30-
val coverageCleanSubprojectFiles = settingKey[Boolean]("removes subproject data after an aggregation")
31-
}
32-
13+
val autoImport = ScoverageKeys
3314
var enabled = false
3415

35-
import ScoverageKeys._
16+
import autoImport._
3617

3718
val aggregateFilter = ScopeFilter( inAggregates(ThisProject), inConfigurations(Compile) ) // must be outside of the 'coverageAggregate' task (see: https://github.com/sbt/sbt/issues/1095 or https://github.com/sbt/sbt/issues/780)
3819

20+
override def requires = plugins.JvmPlugin
3921
override def trigger = allRequirements
22+
4023
override lazy val projectSettings = Seq(
4124

4225
coverage := {
@@ -49,31 +32,31 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
4932

5033
coverageReport := {
5134
val target = crossTarget.value
52-
val s = (streams in Global).value
35+
val log = streams.value.log
5336

54-
streams.value.log.info(s"Waiting for measurement data to sync...")
37+
log.info(s"Waiting for measurement data to sync...")
5538
Thread.sleep(1000) // have noticed some delay in writing on windows, hacky but works
5639

57-
loadCoverage(target, s) match {
40+
loadCoverage(target, log) match {
5841
case Some(cov) => writeReports(target,
5942
(sourceDirectories in Compile).value,
6043
cov,
6144
coverageOutputCobertura.value,
6245
coverageOutputXML.value,
6346
coverageOutputHTML.value,
6447
coverageOutputDebug.value,
65-
s)
66-
case None => s.log.warn("No coverage data, skipping reports")
48+
log)
49+
case None => log.warn("No coverage data, skipping reports")
6750
}
6851
},
6952

70-
testOptions in Test <+= postTestReport,
53+
testOptions in Test += postTestReport.value,
7154

72-
testOptions in IntegrationTest <+= postTestReport,
55+
testOptions in IntegrationTest += postTestReport.value,
7356

7457
coverageAggregate := {
75-
val s = (streams in Global).value
76-
s.log.info(s"Aggregating coverage from subprojects...")
58+
val log = streams.value.log
59+
log.info(s"Aggregating coverage from subprojects...")
7760

7861
val xmlReportFiles = crossTarget.all(aggregateFilter).value map (_ / "scoverage-report" / Constants.XMLReportFilename) filter (_.isFile())
7962
CoverageAggregator.aggregate(xmlReportFiles, coverageCleanSubprojectFiles.value) match {
@@ -85,11 +68,11 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
8568
coverageOutputXML.value,
8669
coverageOutputHTML.value,
8770
coverageOutputDebug.value,
88-
s)
71+
log)
8972
val cfmt = cov.statementCoverageFormatted
90-
s.log.info(s"Aggregation complete. Coverage was [$cfmt]")
73+
log.info(s"Aggregation complete. Coverage was [$cfmt]")
9174
case None =>
92-
s.log.info("No subproject data to aggregate, skipping reports")
75+
log.info("No subproject data to aggregate, skipping reports")
9376
}
9477
},
9578

@@ -125,26 +108,26 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
125108
coverageCleanSubprojectFiles := true
126109
)
127110

128-
private def postTestReport = {
129-
(crossTarget, sourceDirectories in Compile, coverageMinimum, coverageFailOnMinimum, coverageOutputCobertura, coverageOutputXML, coverageOutputHTML, coverageOutputDebug, streams in Global) map {
130-
(target, compileSources, min, failOnMin, outputCobertura, outputXML, outputHTML, coverageDebug, streams) =>
131-
Tests.Cleanup {
132-
() => if (enabled) {
133-
loadCoverage(target, streams) foreach {
134-
c =>
135-
writeReports(target,
136-
compileSources,
137-
c,
138-
outputCobertura,
139-
outputXML,
140-
outputHTML,
141-
coverageDebug,
142-
streams)
143-
checkCoverage(c, streams, min, failOnMin)
144-
}
145-
()
146-
}
111+
private def postTestReport = Def.task {
112+
val log = streams.value.log
113+
val target = crossTarget.value
114+
Tests.Cleanup {
115+
() => if (enabled) {
116+
loadCoverage(target, log) foreach { c =>
117+
writeReports(
118+
target,
119+
(sourceDirectories in Compile).value,
120+
c,
121+
coverageOutputCobertura.value,
122+
coverageOutputXML.value,
123+
coverageOutputHTML.value,
124+
coverageOutputDebug.value,
125+
log
126+
)
127+
checkCoverage(c, log, coverageMinimum.value, coverageFailOnMinimum.value)
147128
}
129+
()
130+
}
148131
}
149132
}
150133

@@ -174,47 +157,47 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
174157
coverageOutputXML: Boolean,
175158
coverageOutputHTML: Boolean,
176159
coverageDebug: Boolean,
177-
s: TaskStreams): Unit = {
178-
s.log.info(s"Generating scoverage reports...")
160+
log: Logger): Unit = {
161+
log.info(s"Generating scoverage reports...")
179162

180163
val coberturaDir = crossTarget / "coverage-report"
181164
val reportDir = crossTarget / "scoverage-report"
182165
coberturaDir.mkdirs()
183166
reportDir.mkdirs()
184167

185168
if (coverageOutputCobertura) {
186-
s.log.info(s"Written Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
169+
log.info(s"Written Cobertura report [${coberturaDir.getAbsolutePath}/cobertura.xml]")
187170
new CoberturaXmlWriter(compileSourceDirectories, coberturaDir).write(coverage)
188171
}
189172

190173
if (coverageOutputXML) {
191-
s.log.info(s"Written XML coverage report [${reportDir.getAbsolutePath}/scoverage.xml]")
174+
log.info(s"Written XML coverage report [${reportDir.getAbsolutePath}/scoverage.xml]")
192175
new ScoverageXmlWriter(compileSourceDirectories, reportDir, false).write(coverage)
193176
if (coverageDebug) {
194177
new ScoverageXmlWriter(compileSourceDirectories, reportDir, true).write(coverage)
195178
}
196179
}
197180

198181
if (coverageOutputHTML) {
199-
s.log.info(s"Written HTML coverage report [${reportDir.getAbsolutePath}/index.html]")
182+
log.info(s"Written HTML coverage report [${reportDir.getAbsolutePath}/index.html]")
200183
new ScoverageHtmlWriter(compileSourceDirectories, reportDir).write(coverage)
201184
}
202185

203-
s.log.info("Coverage reports completed")
186+
log.info("Coverage reports completed")
204187
}
205188

206-
private def loadCoverage(crossTarget: File, s: TaskStreams): Option[Coverage] = {
189+
private def loadCoverage(crossTarget: File, log: Logger): Option[Coverage] = {
207190

208191
val dataDir = crossTarget / "/scoverage-data"
209192
val coverageFile = Serializer.coverageFile(dataDir)
210193

211-
s.log.info(s"Reading scoverage instrumentation [$coverageFile]")
194+
log.info(s"Reading scoverage instrumentation [$coverageFile]")
212195

213196
if (coverageFile.exists) {
214197

215198
val coverage = Serializer.deserialize(coverageFile)
216199

217-
s.log.info(s"Reading scoverage measurements...")
200+
log.info(s"Reading scoverage measurements...")
218201
val measurementFiles = IOUtils.findMeasurementFiles(dataDir)
219202
val measurements = IOUtils.invoked(measurementFiles)
220203
coverage.apply(measurements)
@@ -226,7 +209,7 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
226209
}
227210

228211
private def checkCoverage(coverage: Coverage,
229-
s: TaskStreams,
212+
log: Logger,
230213
min: Double,
231214
failOnMin: Boolean): Unit = {
232215

@@ -238,16 +221,16 @@ class ScoverageSbtPlugin extends sbt.AutoPlugin {
238221
def is100(d: Double) = Math.abs(100 - d) <= 0.00001
239222

240223
if (is100(min) && is100(cper)) {
241-
s.log.info(s"100% Coverage !")
224+
log.info(s"100% Coverage !")
242225
} else if (min > cper) {
243-
s.log.error(s"Coverage is below minimum [$cfmt% < $min%]")
226+
log.error(s"Coverage is below minimum [$cfmt% < $min%]")
244227
if (failOnMin)
245228
throw new RuntimeException("Coverage minimum was not reached")
246229
} else {
247-
s.log.info(s"Coverage is above minimum [$cfmt% > $min%]")
230+
log.info(s"Coverage is above minimum [$cfmt% > $min%]")
248231
}
249232
}
250233

251-
s.log.info(s"All done. Coverage was [$cfmt%]")
234+
log.info(s"All done. Coverage was [$cfmt%]")
252235
}
253236
}

Diff for: src/sbt-test/scoverage/bad-coverage/build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ scalaVersion := "2.10.4"
44

55
libraryDependencies += "org.specs2" %% "specs2" % "2.3.13" % "test"
66

7-
ScoverageSbtPlugin.ScoverageKeys.coverageMinimum := 80
7+
coverageMinimum := 80
88

9-
ScoverageSbtPlugin.ScoverageKeys.coverageFailOnMinimum := true
9+
coverageFailOnMinimum := true

Diff for: src/sbt-test/scoverage/coverage-off/build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ scalaVersion := "2.10.4"
44

55
libraryDependencies += "org.specs2" %% "specs2" % "2.3.13" % "test"
66

7-
ScoverageSbtPlugin.ScoverageKeys.coverageMinimum := 80
7+
coverageMinimum := 80
88

9-
ScoverageSbtPlugin.ScoverageKeys.coverageFailOnMinimum := true
9+
coverageFailOnMinimum := true

Diff for: src/sbt-test/scoverage/good-coverage/build.sbt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ scalaVersion := "2.10.4"
44

55
libraryDependencies += "org.specs2" %% "specs2" % "2.3.13" % "test"
66

7-
ScoverageSbtPlugin.ScoverageKeys.coverageMinimum := 80
7+
coverageMinimum := 80
88

9-
ScoverageSbtPlugin.ScoverageKeys.coverageFailOnMinimum := true
9+
coverageFailOnMinimum := true

0 commit comments

Comments
 (0)