1.0.0 • Published 6 months ago

nx-sonarqube v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

@koliveira15/nx-sonarqube

logo

About

A Nx plugin that scans projects using SonarQube / SonarCloud.

graph

To analyze project "app", we need to know the its dependencies and sub-dependencies. Using the Nx project graph, we see that this project has five dependencies, four static and one implicit. With this information, the plugin gathers the source and coverage paths for the analysis.

Sources:

  • apps/app/src
  • libs/lib-b/src
  • libs/lib-c/src
  • libs/libs-d/src
  • libs/libs-e/src
  • libs/libs-f/src

lcov Paths:

  • coverage/apps/app/lcov.info
  • coverage/libs/lib-b/lcov.info
  • coverage/libs/lib-c/lcov.info
  • coverage/libs/libs-d/lcov.info
  • coverage/libs/libs-e/lcov.info
  • coverage/libs/libs-f/lcov.info

Usage

Prerequisites

  1. Nx workspace
  2. SonarQube or Sonar Cloud instance
  3. Jest tests & code coverage enabled

Installation

  1. Install the package:
    npm i -D @koliveira15/nx-sonarqube
  2. Execute the configuration generator to setup sonar for a given project:
    npx nx g @koliveira15/nx-sonarqube:config
  3. Execute the sonar target for the given project:
    npx nx sonar my-project
    or
    npx nx affected --target sonar --parallel 1
    Note: Due to limitations with the scanner, you cannot run more than one scan in parallel

Authentication

Sonar can require authentication credentials. You can set these via environment variables using Nrwl's Nx recipe

SONAR_LOGIN: The authentication token or login of a SonarQube user with either Execute Analysis permission on the project or Global Execute Analysis permission

SONAR_PASSWORD: If you're using an authentication token, leave this blank. If you're using a login, this is the password that goes with your SONAR_LOGIN username

Customization

Modify the executor options based on the configuration table below. These options are based on Analysis Parameters

NameRequiredDescriptionDefault
hostUrlYesSonar server URLhttp://localhost:9000
projectKeyYesThe project's unique key. Allowed characters are: letters, numbers, -, _, . and :, with at least one non-digit.
branchesNoInclude branch name in analysisfalse
exclusionsNoFiles to exclude from coverage
organizationNoSonar organization
projectNameNoName of the project that will be displayed on the web interface
projectVersionNoThe project version.this will default to the package.json version of the app/lib, otherwise it will take the root version
qualityGateNoForces the analysis step to poll the SonarQube instance and wait for the Quality Gate statustrue
qualityGateTimeoutNoSets the number of seconds that the scanner should wait for a report to be processed300
skipImplicitDepsNoSkips adding implicit dependencies to the project graph analysisfalse
testInclusionsNoComma-delimited list of test file path patterns to be included in analysis. When set, only test files matching the paths set here will be included in analysis*/.spec.ts
verboseNoAdd more detail to both client and server-side analysis logsfalse
extraNoA key value pair for any extra sonar variable that is not included in the list above

In Addition, the plugin recognizes any environment variable that is prefixed by SONAR and will add it to the sonar executor variables. For example the environment variable SONAR_LOG_LEVEL=DEBUG will be recognized as sonar.log.level=DEBUG