https://github.com/Backelite/sonar-swift] which now supports Swift and Objective-CImportant : this plugin is not maintained anymore. Please switch to our (Swift plugin)[
SonarQube Plugin for Objective-C
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:
|Issues||YES||Uses OCLint: 71 rules, and Faux Pas: 102 rules|
|Tests||YES||Uses xctool, will probably switch to xcodebuild + xcpretty soon|
|Code coverage||YES||With gcovr for project before Xcode 7, otherwise slather|
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
The plugin runs fine even if Faux Pas is not installed (Faux Pas analysis will be skipped).
Binary packages are available in the release section.
- SonarQube 7.0 support
- SonarQube 6.7 support
- FauxPas 1.7.2 support (4 new rules added)
- OCLint 0.13 support (1 new rule added)
- Update run-sonar.sh : xcodebuild optimization (see https://github.com/Backelite/sonar-objective-c/pull/26 thanks to davidy4ng).
- Fix for properties with space (see https://github.com/Backelite/sonar-objective-c/pull/29 thanks to Branlute)
- Replaced oclint-xcodebuild by xcpretty (see https://github.com/Backelite/sonar-objective-c/pull/25 thanks to davidy4ng).
- Added -nounittests and -usesonarscanner parameters to run-sonar.sh script (see https://github.com/Backelite/sonar-objective-c/pull/23 thanks to davidy4ng).
- Sonar 6 fix for Faux Pas (see https://github.com/Backelite/sonar-objective-c/pull/20 thanks to macostea).
- SonarQube 6 support. Important : will work with SonarQube 5.x and above only. Will not work anymore with SonarQube 4.5.x anymore.
- OCLint 0.11.0 support (see https://github.com/Backelite/sonar-objective-c/pull/13)
- Removed required gcovr check in run-sonar.sh (see https://github.com/Backelite/sonar-objective-c/pull/10)
- Fixed issued in run-sonar.sh (see https://github.com/Backelite/sonar-objective-c/pull/2)
- Better test file detection pattern (see https://github.com/Backelite/sonar-objective-c/pull/3/files)
- 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
plainreporter at build step to get more information in case of build failure
- Capitalized OCLint rule names
- 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.11.0 recommended (0.13.0 since Xcode 9).
- gcovr installed for legacy (pre Xcode 7 coverage)
- slather (
gem install slather). Version 2.1.0 or above (2.4.4 since Xcode 9).
- lizard (PIP installed and
sudo pip install lizard)
- 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
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:
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.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.
- Run the script
run-sonar.shin your Xcode project root folder
- Enjoy or file an issue!
Update (once per plugin update)
- Install the lastest plugin version
run-sonar.shsomewhere 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.
Feel free to contribute to this plugin by issuing pull requests to this repository or to the original one.
SonarQube Plugin for Objective-C is released under the GNU LGPL 3 license.