Branch | Status |
---|---|
master | |
develop |
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.
###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
- Lizard complexity report support (thanks to akshaysyaduvanshi)
####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
- a Mac with Xcode 7 or +
- SonarQube and SonarQube Runner installed (HomeBrew installed and
brew install sonar-runner
) - xcpretty (see instructions below)
- SwiftLint (HomeBrew installed and
brew install swiftlint
). Version 0.3.0 or above. - slather (
gem install slather
). Version 2.1.0 or above. - lizard (PIP installed and
sudo pip install lizard
)
###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.