This project provides an SBT 0.13+ and 1.x plugin for running Checkstyle over Java source files. For more information about Checkstyle, see http://checkstyle.sourceforge.net/
This plugin uses version 8.29 of Checkstyle.
This is a fork of the sbt-code-quality project found here.
Add the following lines to project/plugins.sbt:
addSbtPlugin("com.sandinh" % "sbt-checkstyle" % "3.2.0")sbt-checkstyle is an AutoPlugin, so there is no need to modify the build.sbt file to enable it.
If you still use sbt 0.13.x, please use "com.etsy" % "sbt-checkstyle" % "3.1.2")
You can run Checkstyle over your Java source files with the
checkstyle task.  You can run Checkstyle over your Java tests with
the test:checkstyle task.
The Checkstyle configuration file is ./checkstyle-config.xml by
default.  This can be changed by setting the value of
checkstyleConfigLocation.  By default test:checkstyle uses the same
configuration file, but this can be changed by setting the value of
checkstyleConfigLocation in Test.
The Checkstyle report is output to target/checkstyle-report.xml by
default.  This can be changed by setting the value of
checkstyleOutputFile.  test:checkstyle outputs to
target/checkstyle-test-report.xml, but this can be changed by
setting the value of checkstyleOutputFile in Test.
To change the checkstyle configuration file set checkstyleConfigLocation in build.sbt:
checkstyleConfigLocation := baseDirectory.value / "checkstyle-config.xml"You can also load remote configuration files by specifying a URL:
checkstyleConfigLocation := CheckstyleConfigLocation.URL(
  "https://raw.githubusercontent.com/checkstyle/checkstyle/master/config/checkstyle_checks.xml"
).valueOr load configuration files from the classpath by specifying a resource name and an optional ClassPath:
checkstyleConfigLocation := CheckstyleConfigLocation.Classpath("com/etsy/checkstyle-config.xml").value
// or
checkstyleConfigLocation := CheckstyleConfigLocation.Classpath(
  "google_checks.xml", // google_checks.xml is in com.puppycrawl.tools:checkstyle:<version> jar file
  Compile / managedClasspath
).valueTo run Checkstyle automatically after compilation:
(checkstyle in Compile) := (checkstyle in Compile).triggeredBy(compile in Compile).valueTo run Checkstyle automatically after test compilation:
(checkstyle in Test) := (checkstyle in Test).triggeredBy(compile in Test).valueThe checkstyleXsltTransformations setting allows applying XSLT transformations to the XML report generated by Checkstyle. For instance, this could be used to generate a more readable HTML report.  This setting takes values of Option[Set[XSLTSettings]], so multiple transformations can be applied.
You can set checkstyleXsltTransformations like so in build.sbt:
checkstyleXsltTransformations := {
  Some(Set(CheckstyleXSLTSettings(baseDirectory(_ / "checkstyle-noframes.xml").value, target(_ / "checkstyle-report.html").value)))
}You can control what severity of issues should break the build by setting the checkstyleSeverityLevel in your build.sbt as follows:
checkstyleSeverityLevel := Some(CheckstyleSeverityLevel.Error)Possible values are defined by the CheckstyleSeverityLevel enumeration. The default is None.
If you want to run Checkstyle on your integration tests add the following to your build.sbt:
lazy val root = (project in file("."))
  .configs(IntegrationTest)
  .settings(Defaults.itSettings ++ checkstyleSettings(IntegrationTest): _*)You can then run the tasks it:checkstyle and it:checkstyle-check.
SBT Checkstyle plugin comes with a default Checkstyle version: currently, Checkstyle 8.29 is used by default.
Provided the new Checkstyle version is compatible, you can override the version used at runtime in your build.sbt:
dependencyOverrides += "com.puppycrawl.tools" % "checkstyle" % "8.29" % CheckstyleLibs- Description: The location of the generated checkstyle report.
 - Accepts: any legal file path
 - Default: 
Some(target.value / "checkstyle-report.xml") 
- Description: The location of the checkstyle configuration file.
 - Accepts: 
File, ex:baseDirectory.value / "checkstyle-config.xml"or use one of CheckstyleConfigLocation's method:URL(url: String)|Classpath(name: String, classpath: Classpath = (Compile / fullClasspath).value} - Default: 
checkstyle-config.xmlfile in root project 
- Description: A set of XSLT transformations to be applied to the checkstyle output (optional).
 - Accepts: 
Some(Set[CheckstyleXSLTSettings]) - Default: 
None 
- Description: Decide how much effort to put into analysis.
 - Accepts: 
Some(CheckstyleSeverityLevel.{Ignore, Info, Warning, Error}) - Default: 
None 
Similar to maven-checkstyle-plugin's headerLocation param
Properties correspond to -p param of checkstyle cli
 = taskKey[Seq[String]]("options to pass to checkstyle cli")
Usage example: checkstyleRunOpts += "--debug"
To control how to run upstream checkstyle cli
To control source files in checkstyle task
- clone
 - using IntelliJ
 - Set IntelliJ using scalafmt code formatter
 - sbt
 
scalastyle
scripted
- 
Change organization & name from
"com.etsy" % "sbt-checkstyle-plugin"to"com.sandinh" % "sbt-checkstyle" - 
sbt-checkstyleis now published to bintray as in this guideBy publishing to bintray, Intellij now can download
sbt sourcesofsbt-checkstyle-plugin - 
Update default version of checkstyle from 6.15 to 8.29
 - 
Drop support for sbt 0.13.x
 - 
break change:
checkstyleConfigLocationis now aTaskKey[File], notSettingKey[CheckstyleConfigLocation]andCheckstyleConfigLocation.{File, URL, Classpath}now return a Setting instead of a pure value.Migrate:
checkstyleConfigLocation := CheckstyleConfigLocation.File("path") checkstyleConfigLocation := CheckstyleConfigLocation.URL("url") checkstyleConfigLocation := CheckstyleConfigLocation.Classpath("name")
=>
checkstyleConfigLocation := baseDirectory.value / "path" checkstyleConfigLocation := CheckstyleConfigLocation.URL("url").value checkstyleConfigLocation := CheckstyleConfigLocation.Classpath("name").value
 - 
Fix CheckstyleConfigLocation.Classpath (
checkstyle-config-classpathsbt-test failed) - 
Add
CheckstyleConfigLocation.Classpath(path/to/resource, a-classpath). For example,a-classpathcan be(Compile / exportedProducts).value - 
Call
sys.errorinstead ofsys.exitwhencheckstyleSeverityLevel.isDefined&& checkstyle found issues hasseverity > checkstyleSeverityLevel - 
Change the way to Upgrading Checkstyle version
 - 
Add
autoImport.checkstyleSettingsfor using with other configurations such as Integration testsMigrate:
lazy val root = (project in file(".")).configs(IntegrationTest) Defaults.itSettings checkstyleConfigLocation := baseDirectory.value / "my-checkstyle-config.xml" checkstyle in IntegrationTest := checkstyleTask(IntegrationTest).value checkstyleOutputFile in IntegrationTest := target.value / "checkstyle-integration-test-report.xml"
=>
lazy val root = (project in file(".")) .configs(IntegrationTest) .settings(Defaults.itSettings ++ checkstyleSettings(IntegrationTest): _*) // custom checkstyleConfigLocation & checkstyleOutputFile (optional) checkstyleConfigLocation := baseDirectory.value / "my-checkstyle-config.xml" checkstyleOutputFile in IntegrationTest := target.value / "checkstyle-integration-test-report.xml"
 - 
Add settings:
 
checkstyleHeaderFile, checkstyleProperties, checkstyleRunOptscheckstyle / {fork, forkOptions, trapExit, runner}checkstyle / {includeFilter, excludeFilter, sources}