Branch | Status |
---|---|
master | |
develop |
This repository is a fork of the open source SonarQube Plugin for Objective-C. It provides modifications and extra features needed for our internal use.
A SonarQube 5.0 dashboard of the iOS open source project GreatReader:
###Features
Feature | Supported | Details |
---|---|---|
Complexity | YES | Uses Lizard |
Design | NO | |
Documentation | YES | |
Duplications | YES | |
Issues | YES | Uses OCLint: 63 rules, and Faux Pas: 102 rules |
Size | YES | |
Tests | YES | Uses xctool, will probably switch to xcodebuild + xcpretty soon |
Code coverage | YES | With gcovr for project before Xcode 7, otherwise slather |
###Compatibility
Releases available from this repository are compliant with SonarQube 4.3.x and above.
In order not to break compatibility with the original plugin, plugin releases are numbered with 4 digits.
###Faux Pas support
Faux Pas is a wonderful tool to analyse iOS or Mac applications source code, however it is not free. A 30 trial version is available here.
The plugin runs fine even if Faux Pas is not installed (Faux Pas analysis will be skipped).
###Download
Binary packages are available in the release section.
###Release history
####0.5.1
- Complexity with Lizard !
####0.5.0 (detached from octo project)
- Detached from octo project (to hard to maintain compatibility)
- Removed deprecated API usages for Sonarube 5.3 support
####0.4.0.3 (based on 0.4.0)
- Xcode 7 coverage support (profdata)
####0.4.0.2 (based on 0.4.0)
- Faux Pas support for release 1.5 and 1.6
- Support for multiple projects in a same workspace
####0.4.0.1 (based on 0.4.0)
- Faux Pas support
- Moved OCLint long line threshold to 250
- Add the
plain
reporter at build step to get more information in case of build failure - Capitalized OCLint rule names
###Prerequisites
- a Mac with Xcode
- SonarQube and SonarQube Runner installed (HomeBrew installed and
brew install sonar-runner
) - xcpretty (see instructions below)
- xctool (HomeBrew installed and
brew install xctool
). If you are using Xcode 6, make sure to update xctool (brew upgrade xctool
) to a version > 0.2.2. - OCLint installed. Version 0.10.1 recommended.
- gcovr installed for legacy (pre Xcode 7 coverage)
- slather with profdata support (see instructions below) for Xcode 7 and above.
- lizard (PIP installed and
sudo pip install lizard
) - Faux Pas command line tools installed (optional)
###Installation of slather with profdata support
At the time, slather does not support profdata. A special version of slather needs t be installed.
To install slather with profdata support, follow those steps :
git clone https://github.com/mattdelves/slather.git
cd slather
git checkout feature-profdata
gem build slather.gemspec
gem install --both slather-1.8.1.gem
###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
###Code coverage data format
Since Xcode 7, Apple changed its coverage data format to a new format called 'profdata'. By default this format will be used by the plugin, except if you explicitly force it to legacy mode (for Xcode 6 and below) in your sonar-project.properties with this line:
sonar.objectivec.coverageType=legacy
###Installation (once for all your Objective-C projects)
- Download the plugin binary into the $SONARQUBE_HOME/extensions/plugins directory
- Copy run-sonar.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.
###Analysis
- Run the script
run-sonar.sh
in your Xcode project root folder - Enjoy or file an issue!
###Update (once per plugin update)
- Install the lastest plugin version
- Copy
run-sonar.sh
somewhere in your PATH
If you still have run-sonar.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 or to the original one.
###License
SonarQube Plugin for Objective-C is released under the GNU LGPL 3 license.