Skip to content
This repository has been archived by the owner on Oct 21, 2021. It is now read-only.

AlejandroRivera/sbt-checkstyle-plugin

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sbt-checkstyle-plugin Build Status

This project provides an SBT 0.13+ plugin for running Checkstyle over Java source files. For more information about Checkstyle, see http://checkstyle.sourceforge.net/

This plugin uses version 6.5 of Checkstyle.

This is a fork of Etsy's sbt-checkstyle-plugin found here.

Setup

Add the following lines to project/plugins.sbt

addSbtPlugin("com.etsy" % "sbt-checkstyle-plugin" % "0.5.2")

Then add the following line to build.sbt:

com.etsy.sbt.Checkstyle.checkstyleSettings

Usage

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 checkstyleConfig. By default test:checkstyle uses the same configuration file, but this can be changed by setting the value of checkstyleConfig in Test.

The Checkstyle report from executing checkstyle is output to target/checkstyle-report.xml by default. This can be changed by setting the value of checkstyleTarget. test:checkstyle outputs to target/checkstyle-test-report.xml, but this can be changed by setting the value of checkstyleTarget in Test.

You can set checkstyleConfig like so in build.sbt:

com.etsy.sbt.Checkstyle.CheckstyleTasks.checkstyleConfig := scala.xml.XML.loadFile(file("checkstyle-config.xml"))

You can also use URLs like so:

 com.etsy.sbt.Checkstyle.CheckstyleTasks.checkstyleConfig :=
   scala.xml.XML.load("https://raw.githubusercontent.com/checkstyle/checkstyle/master/config/checkstyle_checks.xml")

XSLT Transformations

The xsltTransformations 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 xsltTransformations like so in build.sbt:

xsltTransformations := {
  Some(Set(XSLTSettings(baseDirectory(_ / "checkstyle-noframes.xml").value, target(_ / "checkstyle-report.html").value)))
}

Failing the build

If you want to fail the build when Checkstyle issues are found, you can execute checkstyle-check. Same applies for checking tests: test:checkstyle-check.

You can also control what levels of severity should break the build use checkstyleCheckSeverityLevel like so:

com.etsy.sbt.Checkstyle.CheckstyleTasks.checkstyleCheckSeverityLevel := Set("ignore", "info", "warning", "error")

Default value is:

com.etsy.sbt.Checkstyle.CheckstyleTasks.checkstyleCheckSeverityLevel := Set("error")

Sample output:

...
[info] Will fail the build if errors are found in Checkstyle's XML report.
[warn] Checkstyle error found in [...]/src/main/java/com/etsy/sbt/TestClass.java: Utility classes should not have a public or default constructor.
[warn] Checkstyle error found in [...]/src/main/java/com/etsy/sbt/TestClass.java: File contains tab characters (this is the first instance).
...
[error] (compile:checkstyle) java.lang.IllegalStateException: Issue(s) found in Checkstyle report: [...]/checkstyle-check/target/checkstyle-report.xml. Failing build!
[error] Total time: 0 s, completed Sep 4, 2015 1:16:23 PM

Integration Tests

If you wish to run Checkstyle on Integration tests, you can do the following in your build.sbt:

lazy val root = (project in file(".")).configs(IntegrationTest)

Defaults.itSettings

import com.etsy.sbt._

com.etsy.sbt.Checkstyle.checkstyleSettings ++ Seq(
  Checkstyle.CheckstyleTasks.checkstyleConfig                     := scala.xml.XML.loadFile(file("my-checkstyle-config.xml")),
  Checkstyle.CheckstyleTasks.checkstyle       in IntegrationTest <<= Checkstyle.checkstyleTask(IntegrationTest),
  Checkstyle.CheckstyleTasks.checkstyleCheck  in IntegrationTest <<= Checkstyle.checkstyleCheckTask(IntegrationTest),
  Checkstyle.CheckstyleTasks.checkstyleTarget in IntegrationTest <<= target(_ / "checkstyle-integration-test-report.xml")
)

You can then run the tasks it:checkstyle and it:checkstyle-check.

About

SBT Plugin for Running Checkstyle on Java Sources

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 94.8%
  • Java 5.2%