mihaiparv/sonar-objective-c


Sonar Plugin for Objective-C

Download


Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

 
    resolvers += "jitpack" at "https://jitpack.io"
        
    

Add it in your project.clj at the end of repositories:

 
    :repositories [["jitpack" "https://jitpack.io"]]
        
    

Step 2. Add the dependency

	dependencies {
		implementation 'com.github.mihaiparv:sonar-objective-c:0.5.1'
	}
	dependencies {
		implementation("com.github.mihaiparv:sonar-objective-c:0.5.1")
	}
	<dependency>
	    <groupId>com.github.mihaiparv</groupId>
	    <artifactId>sonar-objective-c</artifactId>
	    <version>0.5.1</version>
	</dependency>

                            
    libraryDependencies += "com.github.mihaiparv" % "sonar-objective-c" % "0.5.1"
        
        

                            
    :dependencies [[com.github.mihaiparv/sonar-objective-c "0.5.1"]]
        
        

Readme


<p align="left"> <img src="http://www.backelite.com/bkimages/extension/backelite/design/backelite/templates/img/header_logo.png/3840/2160/PNG" width="100"/> </p>

| Branch | Status | |----------|:------------------------------------------------------------------------------------------------------------------------------------------:| | master | Build Status | | develop| Build Status |

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:

<p align="center"> <img src="sample/screen%20shot%20SonarQube%20dashboard.png" alt="Example iOS SonarQube dashboard" width="100%"/> </p>

###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 (gem install slather). Version 2.1.0 or above.
  • 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:

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.