SonarQube

SonarQube performs deep static code analysis, quality checks, and security scanning across entire codebases. It identifies bugs, vulnerabilities, code smells, insecure patterns, unsafe functions, and maintainability issues. SonarQube provides continuous inspection and enforces security and quality standards automatically in every commit, branch, and pull request. It is a core component of enterprise SAST pipelines.

Why SonarQube Matters

SonarQube detects vulnerabilities and security weaknesses before code reaches production. It enforces coding standards, secure patterns, readability rules, and overall code health. It helps teams avoid regressions, reduce technical debt, and automatically block risky code from merging. SonarQube supports multiple languages, integrates with CI/CD, and provides detailed dashboards for auditing.

It prevents issues such as:

• Injection vulnerabilities
• Hardcoded secrets
• Insecure cryptography
• Command injection
• Weak validation
• SQL injection
• Dangerous functions
• Authorization gaps
• Error-handling weaknesses
• Poor code patterns

SonarQube becomes the central hub for secure code quality enforcement.

How SonarQube Works

Code Scanning Engine

The engine analyzes source code for vulnerabilities, bugs, and code smells using rule sets mapped to CWE, OWASP, and language standards.

Rule Packs

Each language has rule packs for security, maintainability, reliability, and style.

Quality Gates

Quality gates define whether a code change is acceptable. If critical issues appear, the gate fails and blocks merging.

Dashboards

SonarQube dashboards display vulnerabilities, hotspots, trends, and debt metrics.

Branch & PR Analysis

SonarQube analyzes branches and pull requests separately, giving feedback before merging.

Continuous Inspection

SonarQube runs scans continuously as part of CI/CD workflows.


SonarQube Architecture

SonarQube Server

Stores results, runs analysis reports, provides dashboards.

Sonar Scanner

CLI tool used in CI/CD to send analysis data to the server.

Language Plugins

Provide rules for languages such as Python, JavaScript, Java, Go, C#, C++, Ruby, PHP.

Database

Stores issues, rules, metrics, and historical data.

CI/CD Integration

GitHub, GitLab, Jenkins, Bitbucket, Azure DevOps.


Core Features for Security

Vulnerability Detection

Detects OWASP Top 10 and CWE issues.

Hotspots

Highlights areas needing manual review for potential vulnerabilities.

Security Rules

Thousands of rules for:

• Injection
• Crypto misuse
• Access control
• Dangerous APIs
• Overflow
• Authentication
• Error handling

Taint Analysis

Tracks user input through code to identify injection paths.

Secret Detection

Flags hardcoded secrets and tokens.

Code Quality

Detects code smells that lead to vulnerabilities over time.

Dependency Scanning (via extensions)

Detects known vulnerable libraries.


Quality Gates

Quality gates enforce rules such as:

• No new critical vulnerabilities
• No new security hotspots
• Code coverage thresholds
• No duplications
• No blocker issues
• Max maintainability debt

A failed gate stops merging.


What SonarQube Detects

Vulnerabilities

• SQL injection
• Command injection
• Path traversal
• Weak crypto
• Insecure deserialization
• Hardcoded secrets
• Unsafe regex
• Insecure randomness

Bugs

• Null dereferences
• Memory leaks
• Logic errors

Code Smells

• Bad design
• Duplicate code
• Long functions
• Dead code
• Inconsistent naming

Security Hotspots

• Security-sensitive functions needing review


Setting Up SonarQube

1. Install SonarQube

Run locally using Docker:

docker run -d --name sonar \
  -p 9000:9000 \
  sonarqube:latest

Access at:

http://localhost:9000

2. Install Sonar Scanner

Download the CLI scanner.
Add to PATH.

3. Generate Token

In SonarQube web UI:

My Account → Security → Generate Token

Running a Scan

In project root, create:

sonar-project.properties

Add:

sonar.projectKey=myapp
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=<token>

Run scan:

sonar-scanner

View results in SonarQube UI.


SonarQube in CI/CD

GitHub Actions

- name: SonarQube Scan
  uses: sonarsource/sonarqube-scan-action@v1
  with:
    host-url: ${{ secrets.SONAR_HOST }}
    token: ${{ secrets.SONAR_TOKEN }}

GitLab CI

sonarqube:
  script:
    - sonar-scanner

Jenkins

Install Sonar plugin and configure Sonar server.


Advanced SonarQube Usage

Custom Rules

Create rules using SonarQube templates or Roslyn/ESLint-based custom rules.

Security Profiles

Choose default security profiles or customize your own.

Quality Profiles

Define which rules apply to each language.

Ignore Files or Directories

Exclude vendor directories:

sonar.exclusions=node_modules/**,vendor/**

Branch Analysis

Enable:

sonar.branch.name=feature-x

Pull Request Decoration

SonarQube posts findings directly in PR.


Deep Practical Section

Extensive hands-on practical exercises for mastering SonarQube.


Practical 1: Install SonarQube with Docker

Run:

docker run -d --name sonar \
  -p 9000:9000 \
  sonarqube

Create admin login.
Configure initial security profiles.


Practical 2: Configure Sonar Scanner for a Project

Create file:

sonar-project.properties

Include:

sonar.sources=src
sonar.tests=tests
sonar.language=python

Run:

sonar-scanner

Verify results on dashboard.


Practical 3: Analyze Python Code for Vulnerabilities

Write insecure code:

os.system("rm -rf " + user_input)

Run SonarQube scan.
Fix warnings.
Re-run scan.


Practical 4: Analyze JavaScript Security Issues

Add insecure code:

eval(userInput)

SonarQube should flag:

• Injection risk
• Dangerous use of eval

Fix code, rerun.


Practical 5: Detect Hardcoded Secrets

Add:

API_KEY = "123SECRET"

Scan.
Fix by using environment variables.


Practical 6: Enable Taint Analysis for Injection Detection

Create vulnerable workflow:

query = "SELECT * FROM users WHERE name='" + name + "'"

Scan.
View data flow arrow in SonarQube UI.
Replace with parameterized query.


Practical 7: Customize Quality Gates

Set:

• No new critical vulnerabilities
• Code coverage > 70%
• No security hotspots allowed

Apply to entire project.


Practical 8: Enable Pull Request Decoration

Integrate with GitHub or GitLab.
Sonar posts comments directly inside the PR.


Practical 9: Build a Team Dashboard

Customize dashboard panels:

• Vulnerabilities
• Bugs
• Code smells
• Technical debt
• Issues by severity
• Issues by module

Use for sprint planning.


Practical 10: Add Secret Patterns to Custom Rules

Create regex rule:

(aws_access_key_id|api_key|token|secret)

Run scans and test custom rule detection.


Practical 11: Configure Exclusions

Add:

sonar.exclusions=tests/**,**/*.min.js,node_modules/**

Scan and verify exclusions.


Practical 12: Analyze Unit Test Coverage

Integrate test coverage report:

coverage.xml

Add to properties:

sonar.python.coverage.reportPaths=coverage.xml

Re-scan.


Practical 13: Build Docker Image of Scanner for CI

Create custom Dockerfile with scanner installed.
Use image in GitLab CI or Jenkins.


Practical 14: Perform Differential (PR) Analysis

Analyze only new code:

sonar-scanner -Dsonar.pullrequest.key=123

View focused results.


Practical 15: Create Organization-Wide Quality Profile

Add rules:

• No eval
• No direct SQL
• No insecure MD5
• No logging secrets
• No empty catch blocks

Assign projects to profile.


Practical 16: Configure Email Alerts

Enable alerts for:

• New critical vulnerabilities
• Quality gate failures
• Reopened issues

Test with insecure commit.


Practical 17: Add License and Security Compliance Checks

Use plugins to detect:

• License violations
• Vulnerable open-source libraries

Scan project and review dependency issues.


Practical 18: Set Up Automatic Nightly Full Scans

CI pipeline scheduled scan:

• Full codebase
• All branches
• All rules
• Report stored in SonarQube


Practical 19: Create Policy That Blocks Releases on Failed Gates

Add pipeline rule:

if quality_gate_status != "OK":
    exit 1

No deployment occurs until issues are fixed.


Practical 20: Build Complete SonarQube Architecture Diagram

Include:

• Server
• Scanner
• CI/CD
• Database
• Quality profiles
• Rules
• Dashboards
• PR decoration
• Alerting

Use diagram for training and governance.


Intel Dump

• SonarQube provides deep static analysis for vulnerabilities, bugs, and code smells
• It supports multiple languages with large rule sets mapped to OWASP and CWE
• Quality gates block insecure code from merging
• Taint analysis tracks user input to dangerous sinks
• Sonar Scanner integrates with all CI/CD systems
• Practical work covers installation, scanning, hardcoded secrets detection, injection detection, custom rules, dashboards, PR decoration, excluded paths, test coverage, nightly scans, and release blocking

HOME COMMUNITY CAREERS DASHBOARD