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.
In SonarQube under Quality Profiles the used Linter can be specified by selecting either the SwiftLint Profile or the Tailor Profile as Default profile for Swift Projects:
|Complexity||YES||Uses Lizard||Uses Lizard|
|Issues||YES||Uses SwiftLint and/or Tailor for Swift. OCLint and Faux Pas for Objective-C||Uses Tailor|
|Tests||YES||Uses xcodebuild + xcpretty xcpretty||Not Supported|
|Code coverage||YES||Uses slather||Not Supported|
Faux Pas support
The plugin runs fine even if Faux Pas is not installed (Faux Pas analysis will be skipped).
Checkout the Releases page.
The full release history is also available in CHANGELOG.md.
Launching an analysis
- a Mac with Xcode 7 or +
- SonarQube and SonarQube Scanner
- xcpretty (see instructions below)
- SwiftLint (HomeBrew installed and
brew install swiftlint). Version 0.3.0 or above.
- Tailor (HomeBrew installed and
brew install tailor). Version 0.11.1 or above.
- slather (
gem install slather). Version 2.1.0 or above (2.4 since Xcode 8.3).
- lizard (PIP installed and
sudo pip install lizard)
- OCLint installed. Version 0.11.0 recommended (0.13.0 since Xcode 9).
- Faux Pas command line tools installed (optional)
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.propertiesfile 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
run-sonar-swift.shsomewhere 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.
Thank you for your interest in the project! Contributions are welcome and appreciated.
Make sure to read these guides before getting started:
SonarQube Plugin for Swift is released under the GNU LGPL v3 license. See the LICENSE file for more info.