Noise Configuration¶
Configure noise filtering to reduce false positives and focus on actionable findings.
Overview¶
Noise configuration controls how SuperQode filters and deduplicates QE findings:
- Confidence Thresholds: Filter low-confidence findings
- Deduplication: Remove similar findings
- Severity Filtering: Focus on important issues
- Known Risk Suppression: Suppress acknowledged risks
- Limits: Control finding volume
Basic Configuration¶
Configuration Options¶
Confidence Threshold¶
Minimum confidence score (0.0 to 1.0) for findings:
Recommendations:
| Use Case | Threshold | Rationale |
|---|---|---|
| Strict filtering | 0.9 | Only high-confidence findings |
| Balanced (default) | 0.7 | Good balance of precision/recall |
| More findings | 0.5 | Include more potential issues |
Deduplication¶
Remove similar findings:
Similarity Threshold: 0.0 (different) to 1.0 (identical)
0.8: Default, removes clearly duplicate findings0.9: Only removes nearly identical findings0.7: More aggressive deduplication
Severity Filtering¶
Minimum severity to report:
Severity Levels:
critical: Only critical issueshigh: Critical and high severitymedium: Critical, high, and mediumlow: All findings (default)
Known Risk Suppression¶
Suppress findings matching known risk patterns:
qe:
noise:
suppress_known_risks: true
known_risk_patterns:
- "Deprecated API usage"
- "TODO:.*security"
- "FIXME:.*vulnerability"
Pattern Types:
- Exact match: Exact string match
- Regex patterns: Regular expression patterns (Python regex)
Finding Limits¶
Control maximum number of findings:
Use Cases:
- Per-file limit: Prevent one file from dominating report
- Total limit: Cap total findings for review
Complete Configuration Example¶
qe:
noise:
# Confidence threshold
min_confidence: 0.75
# Deduplication
deduplicate: true
similarity_threshold: 0.85
# Severity filtering
min_severity: "medium"
# Known risk suppression
suppress_known_risks: true
known_risk_patterns:
- "Known issue:.*"
- "Acceptable risk:.*"
- "TODO.*security.*acknowledged"
# Finding limits
max_findings_per_file: 5
max_total_findings: 50
# Severity rules
apply_severity_rules: true
Severity Rules¶
Enable rule-based severity adjustments:
qe:
noise:
apply_severity_rules: true # Default: true
severity_rules:
# Custom severity rules (optional)
rules:
- pattern: "SQL.*injection"
severity: "critical"
- pattern: "XSS.*vulnerability"
severity: "high"
Default Rules:
SuperQode includes default severity rules for common issues: - SQL injection โ critical - XSS vulnerabilities โ high - Hardcoded secrets โ critical - And more...
Custom Rules:
Define custom patterns:
qe:
noise:
severity_rules:
rules:
- pattern: "authentication.*bypass"
severity: "critical"
- pattern: "rate.*limit.*missing"
severity: "medium"
Memory-Based Suppression¶
SuperQode learns from user feedback and suppresses findings that were previously dismissed:
qe:
noise:
# Memory-based suppression is automatically enabled
# when memory.store is configured
use_memory_suppressions: true # Default: true if memory enabled
How It Works:
- User dismisses a finding
- Finding pattern stored in memory
- Future similar findings automatically suppressed
Configuration:
Mode-Specific Configuration¶
Different noise settings for Quick Scan vs Deep QE:
qe:
modes:
quick_scan:
noise:
min_confidence: 0.8
min_severity: "medium"
max_total_findings: 20
deep_qe:
noise:
min_confidence: 0.6
min_severity: "low"
max_total_findings: 200
Rationale:
- Quick Scan: Stricter filtering for fast feedback
- Deep QE: More permissive to catch edge cases
Advanced Options¶
Similarity Calculation¶
Deduplication uses multiple factors:
- File path
- Line number (nearby lines considered similar)
- Finding title and description
- Evidence content
Custom Similarity:
Severity Adjustment Logging¶
Log severity adjustments for debugging:
Configuration Priority¶
Noise configuration is loaded in this order:
- Role-specific (in
team.modes.qe.roles.<role>.noise) - Mode-specific (in
qe.modes.<mode>.noise) - Global (in
qe.noise)
Example:
qe:
noise:
min_confidence: 0.7 # Global default
modes:
quick_scan:
noise:
min_confidence: 0.8 # Override for quick scan
team:
modes:
qe:
roles:
security_tester:
noise:
min_confidence: 0.9 # Stricter for security role
Testing Configuration¶
Test noise configuration:
# Run QE with verbose output
superqe run . --mode quick -v
# Check filtering stats in QR
cat .superqode/qe-artifacts/qr-*.json | jq '.noise_filter_stats'
Best Practices¶
1. Start Conservative¶
Begin with stricter filtering, then relax:
2. Use Known Risk Patterns¶
Suppress acknowledged risks:
qe:
noise:
suppress_known_risks: true
known_risk_patterns:
- "Acknowledged.*TODO"
- "Acceptable.*risk"
3. Set Reasonable Limits¶
Prevent report bloat:
4. Adjust by Mode¶
Stricter for Quick Scan, permissive for Deep QE:
qe:
modes:
quick_scan:
noise:
min_confidence: 0.8
max_total_findings: 20
deep_qe:
noise:
min_confidence: 0.6
max_total_findings: 200
Troubleshooting¶
Too Many Findings¶
Problem: Report has too many findings
Solution: Increase thresholds and limits:
Missing Important Findings¶
Problem: Important findings filtered out
Solution: Lower thresholds:
Duplicate Findings¶
Problem: Same finding appears multiple times
Solution: Enable deduplication:
Next Steps¶
- Noise Filtering - How noise filtering works
- YAML Reference - Complete configuration reference
- Memory System - Memory-based suppression