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.
Releases available from this repository are compatible with SonarQube 7.1, and above.
Feature | Supported | Details |
---|---|---|
Complexity | YES | Uses Lizard |
Design | NO | |
Documentation | YES | |
Duplications | NO | |
Issues | YES | Uses OCLint |
Size | YES | |
Tests | YES | |
Code coverage | YES | Uses slather |
It's recommended to install all of the dependencies without root access for
security reasons. Also, install necessary gems for each project, via bundler
,
to reduce version conflicts, etc.
- A Mac with Xcode installed.
- HomeBrew
- PyPi
- SonarQube (either local or remote installation)
- SonarQube Scanner
(
brew install sonar-scanner
) - OCLint (
brew cask install oclint
) - Lizard (
pip install --user lizard
) - Bundler (
gem install --user-install bundler
)
Both OCLint and Lizard are optional, however, if the dependency is not installed data will be missing from the generated analysis.
The default behaviour for Bundler is to install gems in a system-wide directory, i.e. root access is required.
In order to get Bundler to install dependencies without root access, it have to
be configured with a new path, bundle config --global path ~/.bundle/gems
.
- Download the release from bintray
- Copy the
jar
into the$SONARQUBE_HOME/extensions/plugins
directory - Restart the SonarQube server
- Copy sonar-project.properties into your project root folder
- Modify the
sonar-project.properties
file to match your project setup - Configure your project according to the
Fastfile
example andGemfile
example
- Extract core module to separate project
- Extract lizard module to separate project
- Extract surfire module to separate project
- Use default value for empty startline in OCLint reports
- Categorize OCLint rules to code smell, bug, and vulnerability
- Move Cobertura, Lizard, OCLint, and surefire into separate modules
- Support SonarQube 7.3
- Move module code into new packages to ensure consistency
- Include resources when building plugin, was not included since converting to Gradle
- Use SonarCloud to analyse project
- Include dependencies when building plugin, was not included since converting to Gradle
- Reduce technical dept in Squid sensor
- Automate update of version when building release
- Improve language filter to reduce warnings
- Migrate project to Gradle
- Ensure OCLint rule exist before creating issue
- Improve documentation for installation
- Remove support for FauxPas
- Drop support for SonarQube versions prior to 7.1
- Improve configuration key and default report path for Lizard
- Improve configuration key and default report path for Cobertura
- Improve configuration key and default report path for OCLint
- Use distinct configuration key for Surefire reports
- Allow Surefire default report path to be specified from web interface
- Improve default reports path for Surefire
- Replace
run-sonar.sh
with preferredfastlane
configuration with dependencies viaGemfile
- Only include Objective-C language files from Lizard, Cobertura, Surefire, and OCLint
- Include test coverage for project to SonarQube analysis
- Detached from backelite project (no active maintainers)
- Ensure compatibility with SonarQube 7.0
- Update Lizard complexity report parsing to use new API
- Remove use of deprecated metrics from Lizard complexity reports
- Warn instead of throwing uncatched exception if Lizard complexity report XML file is not available
- Ensure OCLint violation reports are properly parsed and sent to SonarQube
- Update available rules for OCLint
- Include description from OCLint rules
- Update Surefire report parsing to use new API
- Update Cobertura report parsing to use new API
- Remove support for legacy code coverage
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.