A SonarQube plugin that integrates Trivy vulnerability scanner results into SonarQube analysis. This plugin reads Trivy SARIF reports and creates security issues in SonarQube, enabling comprehensive security analysis within your existing SonarQube workflow.
- SARIF Integration: Seamlessly imports Trivy vulnerability reports in SARIF format
- Multi-Severity Support: Handles Critical, High, Medium, and Low severity vulnerabilities
- Quality Gate Integration: Provides metrics for quality gate conditions
- Comprehensive Metrics: Tracks Critical, New, Resurfaced, and Unique vulnerabilities
- Automated Issue Creation: Automatically creates SonarQube issues from Trivy findings
- Docker Support: Includes Docker Compose setup for easy testing
- SonarQube: 9.9 or higher
- Java: 11 or higher
- Maven: 3.6 or higher
- Trivy: Latest version (for generating SARIF reports)
- Download the latest plugin JAR from the releases page
- Copy the JAR file to your SonarQube
extensions/pluginsdirectory - Restart SonarQube
# Clone the repository
git clone https://github.com/seanly/sonar-trivy-plugin.git
cd sonar-trivy-plugin
# Build the plugin
mvn clean package
# Copy the built plugin to SonarQube
cp target/sonar-trivy-plugin-9.0.0.jar /path/to/sonarqube/extensions/plugins/
# Restart SonarQube# Start SonarQube with the plugin pre-installed
docker-compose up -d
# Access SonarQube at http://localhost:9000
# Default credentials: admin/adminConfigure the plugin in your SonarQube project settings:
| Property | Key | Default | Description |
|---|---|---|---|
| Trivy SARIF File Path | trivy.sarif.file.path |
trivy-report.sarif |
Path to the Trivy SARIF report file |
- Go to Administration → Quality Profiles
- Select your project's quality profile
- Search for "Trivy" rules
- Activate the desired vulnerability rules:
- Critical - Critical security vulnerabilities
- High - High security vulnerabilities
- Medium - Medium security vulnerabilities
- Low - Low security vulnerabilities
Add Trivy metrics to your quality gate:
- Go to Administration → Quality Gates
- Add conditions for:
- Critical Vulnerabilities
- New Vulnerabilities
- Resurfaced Vulnerabilities
- Unique Vulnerabilities
# Full scan (vulnerabilities, secrets, misconfigurations)
./scan.sh
# Quick scan (vulnerabilities only)
./quick-scan.sh# Install Trivy (if not already installed)
# See: https://aquasecurity.github.io/trivy/latest/getting-started/installation/
# Run Trivy filesystem scan
trivy fs \
--format sarif \
--output trivy-report.sarif \
--severity CRITICAL,HIGH,MEDIUM,LOW \
--scanners vuln,secret,config \
.# Configure SonarQube connection
export SONAR_HOST_URL="http://localhost:9000"
export SONAR_TOKEN="your-sonar-token"
# Run SonarQube scanner
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.sources=src \
-Dtrivy.sarif.file.path=trivy-report.sarif- Issues: View Trivy vulnerabilities as SonarQube issues
- Metrics: Check vulnerability counts in project overview
- Quality Gate: Monitor security metrics in quality gates
The plugin provides four key metrics:
| Metric | Description |
|---|---|
| Critical Vulnerabilities | Number of critical security vulnerabilities |
| New Vulnerabilities | Number of newly detected vulnerabilities |
| Resurfaced Vulnerabilities | Number of vulnerabilities that reappeared |
| Unique Vulnerabilities | Total number of unique vulnerabilities |
src/main/java/org/sonarsource/plugins/trivy/
├── TrivyPlugin.java # Main plugin entry point
├── TrivyVulnerabilitySensor.java # Sensor for processing SARIF files
├── TrivyProcessor.java # SARIF file processor
├── TrivyDataStore.java # Data storage and management
├── AddTrivyComment.java # Post-job for adding vulnerability links
├── config/
│ ├── Properties.java # Plugin configuration properties
│ ├── TrivyMetrics.java # Metrics definitions
│ └── TrivyVulnerabilityRulesDefinition.java # Rule definitions
└── model/
└── TrivyData.java # Data models
# Build the project
mvn clean package
# Run tests
mvn test
# Run with Docker
docker-compose up -dThe Docker setup includes debug ports:
- Web Server: Port 8001
- Compute Engine: Port 8002
Connect your IDE to these ports for debugging.
The project includes a comprehensive Trivy configuration file that covers:
- Scanners: Vulnerability, secret, and misconfiguration scanning
- Severity Levels: CRITICAL, HIGH, MEDIUM, LOW
- Skip Patterns: Excludes build artifacts and temporary files
- Cache Settings: Optimized for development workflow
Configure your SonarQube project settings:
sonar.projectKey=my-project
sonar.projectName=My Project
sonar.projectVersion=1.0
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=your-token
trivy.sarif.file.path=trivy-report.sarif- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Trivy - Comprehensive security scanner
- SonarQube - Code quality platform
- SARIF - Static Analysis Results Interchange Format
- Issues: GitHub Issues
- Documentation: Wiki
- Email: seanly@opsbox.dev
Made with ❤️ by Seanly Liu