Skip to content

Gradle plugin to apply WartRemover (Scala linting tool)

License

Notifications You must be signed in to change notification settings

augi/gradle-wartremover

Repository files navigation

Gradle WartRemover Plugin Build Version

Gradle plugin to apply WartRemover, the Scala linting tool.

It applies the WartRemover plugin with same settings to all ScalaCompile tasks, so even the test code is checked.

"Keep your tests clean. Treat them as first-class citizens of the system." Robert C. Martin (Uncle Bob)

If you want to have different settings for tests then you can use the test block as shown below. If you don't use test block then all the settings is applied to all the Scala code.

Please note that since 0.15.0 version at least Gradle 6.4 is required (because the plugin uses scalaCompilerPlugins configuration).

Usage

The plugin is published to Gradle Plugins portal

plugins {
  id 'cz.augi.gradle.wartremover' version '<putCurrentVersionHere>'
}

Configuration

  • errorWarts.add(<String>) or errorWarts.addAll(Collection<String>) (default is an empty Set<String>):
    • Set of warts to use which throw an error when violated.
  • warningWarts.add(<String>) or warningWarts.addAll(Collection<String>) (default is a Set<String> with all wartremover:2.x Unsafe warts):
    • Set of warts to use which throw a warning when violated.
  • excludedFiles.add(<String>) or excludedFiles.addAll(Collection<String>) (default is an empty Set<String>):
    • Set of files to be excluded from wartremover coverage.
  • classPaths.add(<String>) or classPaths.addAll(Collection<String>) (default is an empty Set<String>):
    • Set of files or directories to be added to the classpath if using custom warts.
  • scalaVersion = <String> (default detected):
    • Scala version used to denote the wartremover artifact, e.g. scalaVersion = 2.13.16 -> wartremover_2.13.16; scalaVersion = 2.13 -> wartremover_2.13.
    • Refer to the Maven Repository for corresponding artifact versions.
  • wartremoverVersion = <String> (default '2.4.21' for Scala 2.11+, 2.3.7 for Scala 2.10):
    • Version of the org.wartremover dependency. This plugin is compatible with 2.x by default, while 3.x may require manually adding the different Unsafe warts.
watremover {
    errorWarts.add('Product')
    warningWarts.add('Product')
    excludedFiles.add('src/main/scala/me/project/Main.scala')
    classPaths.add(new File("path/to/yourWarts").toURI().toURL().toString())
    scalaVersion = '2.13.16'
    wartremoverVersion = '2.4.21'
    test {
        errorWarts.add('Serializable') // default settings from the block above
        warningWarts.add('Serializable') // default settings from the block above
        excludedFiles.add('src/test/scala/me/project/Test.scala') // default settings from the block above
        classPaths.add(new File("path/to/yourTestWarts").toURI().toURL().toString()) // default settings from the block above
    }
}

About

Gradle plugin to apply WartRemover (Scala linting tool)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages