2.0.2 • Published 1 year ago

@nsf-open/ember-cli-sonarqube v2.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Coverage Status

@nsf-open/ember-cli-sonarqube

Sonarqube analysis integration for Ember projects.

Installation

npm install @nsf-open/ember-cli-sonarqube --save-dev

Usage

This package provides the sonar executable. Depending on what is available in the project being analyzed, the following steps are taken to gather metrics:

  • Run eslint
  • Run ember-template-lint
  • Run project tests with ember-cli-code-coverage enabled
  • Run sonar-scanner
npx sonar [options]
ArgumentTypeDefaultDescription
--helpbooleanfalseShow help
--versionbooleanfalseShow version number
--cleanupbooleantrueDelete analysis files after uploading.
--verbosebooleanfalseOutput the full results of each gathered metric.
--quietbooleanfalseIf true, test progression will not be logged.
--rejectbooleanfalseIf true, the process will exit with a non-zero code if any steps failed. This allows the results to also be used as part of a pipeline or quality gate, but note that this does not fail-fast; all steps will run regardless of how the previous step exited.
--test-cmdstring"npm test"The testing script that will be run to gather coverage info. This command does not need to include the COVERAGE environment flag needed by ember-cli-code-coverage.
--sonar-urlstringundefinedThe URL of the Sonarqube server. If not provided by this argument, the sonar.host.url property will need to be set in the project's sonar-scanner.properties file.
--sonar-tokenstringundefinedAn access token for the Sonarqube server, if required.
--dry-runbooleanfalseIf true, metrics will be gathered but not uploaded to Sonarqube.
--only-analysisbooleanfalseIf true, no new metrics will be gathered but any existing will be uploaded to Sonarqube.
--eslinst-argsstringundefinedAdditional arguments that will be passed to ESLint.
--template-lint-argsstringundefinedAdditional arguments that will be passed to Ember Template Lint.

Environment Variables

The SONAR flag is provided with each child process, so it is easy to provide configuration specific to the analysis task. For example, you might want to toggle linting rules to capture more information in Sonar.

For example:

// .eslintrc.js

module.exports = {
  rules: {
    'ember/new-module-imports': process.env.SONAR ? 'error' : 'off',
  }
}

Generic Test Data (QUnit)

If you'd like to record test results then this package provides a Testem reporter that outputs in the SonarQube Generic Test Data format. In order to use, you'll need to configure a few things.

In the project's testem.js config file, add the following to your existing configuration:

// testem.js
const { SonarReporter } = require('@nsf-open/ember-cli-sonarqube/testem');

module.exports = {
  reporter: SonarReporter
}

In the project's tests/test-helper.js add the following:

// tests/test-helper.js
import * as QUnit from 'qunit';
import { setupQunitReporting } from '@nsf-open/ember-cli-sonarqube/test-support';
setupQunitReporting(QUnit);