/sonar-swift

Open source Swift plugin for SonarQube

Primary LanguageJava

Branch Status
master Build Status
develop Build Status

SonarQube Plugin for Swift

This is an open source initiative for Apple Swift language support in SonarQube. The structure of the plugin is based on the sonar-objective-c plugin.

Example iOS SonarQube dashboard

###Features

Feature Supported Details
Complexity YES Uses Lizard
Design NO
Documentation YES
Duplications YES
Issues YES Uses SwiftLint
Size YES
Tests YES Uses xcodebuild + xcpretty xcpretty
Code coverage YES Uses slather

###Download

Checkout the Releases page.

###Launching an analysis If you use Fastlane, please read our Fastlane integration doc. Otherwise, run the run-sonar-swift.sh script from your Xcode project root folder

###Release history

####0.3.0

  • SonarQube 6 support. Important : will work with SonarQube 5.x and above only. Will not work anymore with SonarQube 4.5.x anymore.
  • SwiftLint 0.13.1 support (49 rules now).
  • Desactivation of unit tests and coverage is now allowed. Use run-sonar-swift.sh -nounittests to do it.

####0.2.4

  • Analysis does not fail anymore when an unkwown issue is reported by SwiftLint. See issue 35
  • Fastlane documentation (thanks to viteinfinite). See PR 33
  • Fixed Fastlane JUnit report support
  • SwiftLint 0.11.1 support
  • Better return code suppot for run-sonar-swift.sh

####0.2.3

  • Fixed Lizard Sensor wrong file path

####0.2.2

  • Added support for .xcodeproj only projects (thanks to delannoyk)
  • Fix for Lizard Sensor to find indexed files (thanks to gretzki)
  • Got rid of confusion with commercial plugin in the update center

####0.2.1

  • SwiftLint 0.8 support (new rules added).

####0.2.0

####0.1.2

  • SwiftLint 0.5.1 support (new rules added).
  • Added sonar.swift.simulator key in sonar-project.properties to select destination simulator for running tests
  • SwiftLint scans source directories only

####0.1.1

  • SwiftLint 0.4.0 support (new rules added).

####0.1.0

  • Initial release.

###Prerequisites

###Installation of xcpretty with JUnit reports fix

At the time, xcpretty needs to be fixed to work with SonarQube.

To install the fixed version, follow those steps :

git clone https://github.com/Backelite/xcpretty.git
cd xcpretty
git checkout fix/duration_of_failed_tests_workaround
gem build xcpretty.gemspec
sudo gem install --both xcpretty-0.2.2.gem

###Installation (once for all your Swift projects)

  • Download the plugin binary into the $SONARQUBE_HOME/extensions/plugins directory
  • Copy run-sonar-swift.sh somewhere in your PATH
  • Restart the SonarQube server.

###Configuration (once per project)

  • Copy sonar-project.properties in your Xcode project root folder (along your .xcodeproj file)
  • Edit the sonar-project.properties file to match your Xcode iOS/MacOS project

The good news is that you don't have to modify your Xcode project to enable SonarQube!. Ok, there might be one needed modification if you don't have a specific scheme for your test target, but that's all.

###Update (once per plugin update)

  • Install the lastest plugin version
  • Copy run-sonar-swift.sh somewhere in your PATH

If you still have run-sonar-swift.sh file in each of your project (not recommended), you will need to update all those files.

###Contributing

Feel free to contribute to this plugin by issuing pull requests to this repository.

###License

SonarQube Plugin for Swift is released under the GNU LGPL 3 license.