Changelog

8.5.0 - 19.09.2020

8.4.0 - 14.06.2020

  • Added support for PR decoration with GitHub Enterprise. (@jinwoo-k - #434)
    sonar-scala now accepts the following optional property sonar.scala.pullrequest.github.apiurl, which allows you to point it to your instance of GitHub Enterprise, e.g. https://github.mycompany.com/api/v3. This property defaults to the public GitHub API - https://api.github.com.

8.3.0 - 25.05.2020

  • Added support for SonarQube 8.3. (@mwz - #459)
  • Fixed aggregating measures for custom coverage metrics. (@mwz - #447)
  • Updated Scapegoat to 1.4.4. (@mwz - #458)

8.2.0 - 31.03.2020

  • Added support for SonarQube 8.2. (@mwz - #410)
  • Updated Scapegoat to v1.4.2, which brings two new inspections: VariableShadowing and RepeatedIfElseBody. (@mwz - #408)
  • Added descriptions of Scapegoat rules into the Scapegoat rules repository. (@mwz - #408)

8.1.0 - 02.02.2020

Updated Scalastyle to v1.4.0, which brings the following changes (@mwz - #387):

  • Added regex param to HeaderMatchesChecker rule in the default config.
  • Added CurliesImportChecker rule, which allows only for single imports (no renaming and no hiding imports are allowed in order to minimize merge errors in import declarations). This rule is included in Scalastyle and Scalastyle+Scapegoat quality profiles.
  • PackageNamesChecker was updated to allow only lowercase letters in package names.
  • Made Scalastyle rule descriptions more consistent. (@mwz - #383)

8.0.0 - 26.01.2020

  • Added support for SonarQube 8.1. (#340 - @mwz)
  • Added support for Scala 2.13 sources. The sonar.scala.version property defaults to 2.13 if not set explicitly by the user. (#355 - @mwz)
  • Updated Scapegoat rules from 1.3.9 to 1.4.1. (#355 - @mwz)
    • Rules TraversableHead and TraversableLast were collapsed into UnsafeTraversableMethods.
    • Rules UnnecessaryToInt and UnnecessaryToString were collapsed into UnnecessaryConversion.

7.9.0 LTS - 11.01.2020

Updated Scalastyle to v1.1.0, which brings the following changes:

New Scalastyle rules (#342 - @mwz):

  • New ForLoopChecker rule - omit braces if you have a yield clause, otherwise, surround the contents with curly-braces, even if the contents are only a single line.
  • New WhileBraceChecker rule - it's recommended to never omit braces when using while.
  • New CaseBraceChecker rule - braces aren't required in case clauses.

Scalastyle rule changes:

  • HeaderMatchesChecker has a new parameter regex to indicate whether to treat the header string as a regular expression; defaults to false.
  • MethodLengthChecker has a new parameter ignoreEmpty to exclude empty lines from being counted; defaults to false.
  • ForBraceChecker has a new parameter singleLineAllowed to indicate whether a one-line for expressions with parentheses are allowed; defaults to false.
  • NonASCIICharacterChecker has a new parameter allowStringLiterals to indicate whether non-ASCII scripts in string literals should be allowed; defaults to false.

All of the above rules are activated with the default parameter values in the Scalastyle, Scalastyle+Scapegoat and the Recommended by sonar-scala quality profiles.

7.8.0 LTS - 23.12.2019

  • Implemented a new mode for pull request decoration. In this mode, sonar-scala will review pull requests on Github and make comments on new issues directly in the pull request instead of reporting them to SonarQube.
    To read more about this feature, see the documentation here. (#196, #316, #318, #319, #324 - @mwz)

7.7.0 LTS - 11.10.2019

7.6.0 - 30.06.2019

7.5.0 - 25.03.2019

7.4.0 - 11.03.2019

6.8.0 LTS - 03.03.2019

  • Backported features and bug fixes from the 7.x series - new unit test metrics such as unit test count, duration of each test and the number of skipped and failed tests - see the release notes from 7.3.0 and 7.3.1 releases for more details. (#164 - @mwz)

7.3.1 - 27.01.2019

  • Fixed Scalastyle rule lookup for custom rules created from templates. (#148 - @satabin)

7.3.0 - 30.12.2018

  • Implemented a new sensor which saves unit test metrics such as unit test count, duration of each test and the number of skipped and failed tests. To use the new sensor, set the sonar.tests property which should point to directories containing tests (usually src/test/scala) and make sure you run your unit tests before you trigger sonar-scanner analysis. That's all you need to do in sbt unless you've changed the default location where sbt saves JUnit XML reports - then you'll also need to set the sonar.junit.reportPaths property (which defaults to target/test-reports). For projects using Gradle, setting both properties is necessary to make use of the sensor (Gradle outputs those in build/test-results/test), and Maven additionally requires the Surefire plugin to be installed. Please refer to the sample projects for example configuration for each build tool. (#143 - @mwz)
  • Fixed incorrect log messages about missing sonar.scala.version property. (#139 - @mwz)

6.7.0 LTS - 09.12.2018

  • Backported features from the 7.x series - new Recommended by sonar-scala quality profile and cleaned up Scapegoat rule repository, see the notes from 7.2.0 release for more details. (#136 - @mwz)

7.2.0 - 03.12.2018

  • Added a new quality profile Recommended by sonar-scala, which is a combination of Scalastyle and Scapegoat rules. We recommend using this profile as it excludes any duplicate rules and contains custom instances of Scalastyle templates set up in accordance with the current style guides recommended by the community. (#130 - @mwz)
  • Cleaned up Scapegoat rule repository and quality profiles by removing any Scapegoat rules which are no longer active in the upstream project. (#132 - @mwz)

7.1.0 - 19.11.2018

7.0.0 - 08.10.2018

  • Added support for SonarQube 7.3. The current 6.x series targeting SonarQube 6.7 LTS will be still maintained and will follow the SonarQube LTS lifecycle. (#120 - @mwz)

  • Removed the following:

    • sonar.scoverage.reportPath property which was deprecated in 6.2.0 - please use sonar.scala.scoverage.reportPath instead;
    • the old Scalastyle quality profile and rule registry which were deprecated in 6.6.0; (#120 - @mwz)
  • Bumped up the default value of the sonar.scala.version property to 2.12. (#120 - @mwz)

6.6.0 LTS - 30.09.2018

  • Refactored Scalastyle module and introduced new Scalastyle rules repository along with a new quality profile, which now in addition to the latest Scalastyle rules also consists of rule templates which are activated by default. The existing Scalastyle quality profile and rule registry have been deprecated and will be removed in the next major version of the plugin (7.x). The new module also exposes the following optional property sonar.scala.scalastyle.disable, which allows you to disable the Scalastyle sensor. (#35 - @mwz)
  • New Scalastyle+Scapegoat quality profile, which includes all of the default rules from Scalastyle and Scapegoat quality profiles. (#112 - @BalmungSan)
  • Bumped Scapegoat up to 1.3.7, which introduces a new inspection (UnsafeStringContains) and other various fixes and improvements - see the diff for more details. (#100 - @mwz)
  • Scapegoat sensor now also works with absolute file paths in the Scapegoat report. (#116 - @mwz)

6.5.1 LTS - 11.08.2018

  • This release fixes an issue with Scapegoat sensor using a single report for each module in multi-module projects. (#96 - @mwz)

6.5.0 LTS - 09.07.2018

  • Introduced support for Scapegoat linter. This version of the plugin ships with a Scapegoat rule repository, quality profile as well as a new sensor, which reads the xml report generated by Scapegoat and submits Scapegoat issues to SonarQube. To use this feature, you need to set up Scapegoat in your project and make sure you generate a Scapegoat report before running sonar-scanner, see sbt-scapegoat for SBT integration. This feature exposes the following optional properties:

    • sonar.scala.scapegoat.reportPath - relative path to the scapegoat report (defaults to target/scala-${sonar.scala.version}/scapegoat-report/scapegoat.xml) and
    • sonar.scala.scapegoat.disable - which allows you to disable the Scapegoat sensor from being executed on your sources (defaults to false)

    A massive thanks to @BalmungSan for implementing this feature! (#8 - @BalmungSan, @mwz)

6.4.0 LTS - 23.05.2018

  • Improved logging in the Scoverage sensor. (#61 - @BalmungSan)
  • Fixed Scoverage issues with multi-module Gradle projects. Please see the examples for a reference on how to configure Gradle projects and how to execute SonarQube analysis. (#63 - @mwz)

6.3.0 LTS - 12.05.2018

  • Use semantic versioning scheme to parse the sonar.scala.version property. The patch version is now ignored and 2.11 and 2.12 are valid version numbers. In case of a missing value or an incorrect version the property defaults to 2.11.0. (#53 - @BalmungSan)
  • Fixed an issue which affected Gradle users and caused the sonar sources prefix sonar.sources to be appended twice to filenames in the Scoverage report. (#56 - @mwz)

6.2.0 LTS - 28.04.2018

  • Added support for multiple source locations configured by the sonar.sources property. As per SonarQube documentation, the paths should be separated by a comma. Additionally, the paths can now be absolute, which allows sonar-scala to work with SonarQube Maven plugin. (#52 - @mwz)
  • The Scoverage report path property sonar.scoverage.reportPath was deprecated and will be removed in the next major version. Please use sonar.scala.scoverage.reportPath instead. (#46 - @BalmungSan)

6.1.0 LTS - 28.03.2018

  • The Scoverage sensor was rewritten from scratch; introduced a new branch coverage metric. (#34 - @BalmungSan)
  • Addressed coverage measure warnings reported by sonar-scanner during analysis. (#18 - @BalmungSan)
  • Added a new property sonar.scala.version to specify Scala version. (#2 - @ElfoLiNk)

6.0.0 LTS - 10.02.2018

  • Support for SonarQube 6.7.1 LTS. (#5 - @mwz)