Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions src/main/scala/de/johoop/findbugs4sbt/CommandLine.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,32 @@ package de.johoop.findbugs4sbt
import sbt._
import sbt.Keys._

import scala.io.Source
import scala.xml.Node

import java.io.File
import java.io.{PrintWriter, File}

import ReportType._
import Priority._
import Effort._

private[findbugs4sbt] trait CommandLine extends Plugin with Filters with Settings {

def commandLine(findbugsClasspath: Classpath, compileClasspath: Classpath,
def commandLine(findbugsPluginList: Seq[String], findbugsClasspath: Classpath, compileClasspath: Classpath,
paths: PathSettings, filters: FilterSettings, filterPath: File, misc: MiscSettings, streams: TaskStreams) = {

def findbugsCommandLine = findbugsJavaCall ++ findbugsCallOptions ++ findbugsCallArguments

def findbugsJavaCall = {
val classpath = commandLineClasspath(findbugsClasspath.files)
streams.log.debug("FindBugs classpath: %s" format classpath)

List("-Xmx%dm".format(misc.maxMemory),
"-cp", classpath, "edu.umd.cs.findbugs.LaunchAppropriateUI", "-textui")
}

def findbugsCallArguments = paths.analyzedPath map (_.getPath)

def findbugsCallOptions = {
if (paths.reportPath.isDefined && ! misc.reportType.isDefined)
sys.error("If a report path is defined, a report type is required!")
Expand All @@ -50,7 +51,8 @@ private[findbugs4sbt] trait CommandLine extends Plugin with Filters with Setting
paths.reportPath.map(path => List("-output", path.absolutePath)).getOrElse(Nil) ++ List(
"-nested:%b".format(misc.analyzeNestedArchives),
"-auxclasspath", commandLineClasspath(auxClasspath), misc.priority.toString,
"-effort:%s".format(misc.effort.toString)))))
"-effort:%s".format(misc.effort.toString),
"-pluginList", findbugsPluginList.mkString(":")))))
}

def addOnlyAnalyzeParameter(arguments: List[String]) = misc.onlyAnalyze match {
Expand Down
6 changes: 3 additions & 3 deletions src/main/scala/de/johoop/findbugs4sbt/FindBugs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import Keys._
object FindBugs extends Plugin
with Settings with CommandLine with CommandLineExecutor {

override def findbugsTask(findbugsClasspath: Classpath, compileClasspath: Classpath,
paths: PathSettings, filters: FilterSettings, misc: MiscSettings, javaHome: Option[File],
override def findbugsTask(findbugsPluginList: Seq[String], findbugsClasspath: Classpath, compileClasspath: Classpath,
paths: PathSettings, filters: FilterSettings, misc: MiscSettings, javaHome: Option[File],
streams: TaskStreams): Unit = {

IO.withTemporaryDirectory { filterPath =>
val cmd = commandLine(findbugsClasspath, compileClasspath, paths, filters, filterPath, misc, streams)
val cmd = commandLine(findbugsPluginList, findbugsClasspath, compileClasspath, paths, filters, filterPath, misc, streams)
streams.log.debug("FindBugs command line to execute: \"%s\"" format (cmd mkString " "))
executeCommandLine(cmd, javaHome, streams.log)
}
Expand Down
8 changes: 5 additions & 3 deletions src/main/scala/de/johoop/findbugs4sbt/Settings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ private[findbugs4sbt] trait Settings extends Plugin {

val findbugs = TaskKey[Unit]("findbugs")

val findbugsPluginList = TaskKey[Seq[String]]("findbugs-plugin-list")
val findbugsClasspath = TaskKey[Classpath]("findbugs-classpath")
val findbugsPathSettings = TaskKey[PathSettings]("findbugs-path-settings")
val findbugsFilterSettings = TaskKey[FilterSettings]("findbugs-filter-settings")
Expand Down Expand Up @@ -79,8 +80,8 @@ private[findbugs4sbt] trait Settings extends Plugin {
* <code>None</code> by default. */
val findbugsExcludeFilters = TaskKey[Option[Node]]("findbugs-exclude-filter")

protected def findbugsTask(findbugsClasspath: Classpath, compileClasspath: Classpath,
paths: PathSettings, filters: FilterSettings, misc: MiscSettings, javaHome: Option[File],
protected def findbugsTask(findbugsPluginList: Seq[String], findbugsClasspath: Classpath, compileClasspath: Classpath,
paths: PathSettings, filters: FilterSettings, misc: MiscSettings, javaHome: Option[File],
streams: TaskStreams): Unit

private val findbugsConfig = config("findbugs") hide
Expand All @@ -92,14 +93,15 @@ private[findbugs4sbt] trait Settings extends Plugin {
"com.google.code.findbugs" % "jsr305" % "3.0.0" % "findbugs->default"
),

findbugs <<= (findbugsClasspath, managedClasspath in Compile,
findbugs <<= (findbugsPluginList, findbugsClasspath, managedClasspath in Compile,
findbugsPathSettings, findbugsFilterSettings, findbugsMiscSettings, javaHome, streams) map findbugsTask,

findbugsPathSettings <<= (findbugsReportPath, findbugsAnalyzedPath, findbugsAuxiliaryPath) map PathSettings dependsOn (compile in Compile),
findbugsFilterSettings <<= (findbugsIncludeFilters, findbugsExcludeFilters) map FilterSettings,
findbugsMiscSettings <<= (findbugsReportType, findbugsPriority, findbugsOnlyAnalyze, findbugsMaxMemory,
findbugsAnalyzeNestedArchives, findbugsSortReportByClassNames, findbugsEffort) map MiscSettings,

findbugsPluginList := Seq(),
findbugsClasspath := Classpaths managedJars (findbugsConfig, classpathTypes value, update value),

findbugsReportType := Some(ReportType.Xml),
Expand Down