@accelerationguy/accel 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: sonarqube
|
|
3
|
+
name: SonarQube
|
|
4
|
+
type: code_quality
|
|
5
|
+
domains_fed: ["01", "03", "06", "09"]
|
|
6
|
+
install_required: true
|
|
7
|
+
install_command: "See Installation section — sonar-scanner CLI + SonarQube server required"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# SonarQube Tool Adapter
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Code quality platform producing signals for complexity, duplication, code smells, bug patterns, and coverage metrics. Covers cognitive complexity, cyclomatic complexity, duplicated blocks/lines, bug detection patterns, code smell taxonomy, and test coverage gaps.
|
|
15
|
+
|
|
16
|
+
Feeds domains:
|
|
17
|
+
- **Architecture (01)**: Coupling indicators, complexity metrics
|
|
18
|
+
- **Correctness (03)**: Bug detection patterns, potential defects
|
|
19
|
+
- **Testing (06)**: Coverage metrics, test quality signals
|
|
20
|
+
- **Maintainability (09)**: Code smells, duplication, complexity trends
|
|
21
|
+
|
|
22
|
+
Also feeds Transform agents:
|
|
23
|
+
- Complexity metrics → `architectural_tension_input`
|
|
24
|
+
- Duplication metrics → `coupling_risk_input`
|
|
25
|
+
- Coverage metrics → `regression_probability_input` (inverse)
|
|
26
|
+
|
|
27
|
+
**Important**: Signals are NOT findings. SonarQube produces evidence that agents interpret within domain context.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Configuration
|
|
32
|
+
|
|
33
|
+
SonarQube requires both a server instance and scanner CLI for analysis.
|
|
34
|
+
|
|
35
|
+
### Server Options
|
|
36
|
+
|
|
37
|
+
**Option 1: SonarQube Community Edition (Self-Hosted)**
|
|
38
|
+
- Free and open source
|
|
39
|
+
- Docker: `docker run -d --name sonarqube -p 9000:9000 sonarqube:community`
|
|
40
|
+
- Direct download: https://www.sonarqube.org/downloads/
|
|
41
|
+
- Supports 15+ languages including Java, JavaScript, Python, C#, Go, PHP
|
|
42
|
+
|
|
43
|
+
**Option 2: SonarCloud (Hosted SaaS)**
|
|
44
|
+
- Free for public repositories
|
|
45
|
+
- No server installation required
|
|
46
|
+
- Access via https://sonarcloud.io
|
|
47
|
+
- Configure sonar.host.url=https://sonarcloud.io
|
|
48
|
+
|
|
49
|
+
### Project Configuration File
|
|
50
|
+
|
|
51
|
+
Create `sonar-project.properties` in project root:
|
|
52
|
+
|
|
53
|
+
```properties
|
|
54
|
+
# Project identification
|
|
55
|
+
sonar.projectKey=my-project-key
|
|
56
|
+
sonar.projectName=My Project
|
|
57
|
+
sonar.projectVersion=1.0
|
|
58
|
+
|
|
59
|
+
# Source configuration
|
|
60
|
+
sonar.sources=src
|
|
61
|
+
sonar.tests=tests
|
|
62
|
+
sonar.sourceEncoding=UTF-8
|
|
63
|
+
|
|
64
|
+
# Server connection
|
|
65
|
+
sonar.host.url=http://localhost:9000
|
|
66
|
+
sonar.token=${SONAR_TOKEN}
|
|
67
|
+
|
|
68
|
+
# Language-specific settings (optional)
|
|
69
|
+
sonar.java.binaries=target/classes
|
|
70
|
+
sonar.javascript.lcov.reportPaths=coverage/lcov.info
|
|
71
|
+
sonar.python.coverage.reportPaths=coverage.xml
|
|
72
|
+
|
|
73
|
+
# Exclusions (optional)
|
|
74
|
+
sonar.exclusions=**/vendor/**,**/node_modules/**,**/*.test.js
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Quality Profiles
|
|
78
|
+
|
|
79
|
+
- **Sonar Way** (default): Balanced ruleset for each language
|
|
80
|
+
- **Custom profiles**: Configure via SonarQube UI at Administration > Quality Profiles
|
|
81
|
+
- Language-specific analyzers with severity levels: BLOCKER, CRITICAL, MAJOR, MINOR, INFO
|
|
82
|
+
|
|
83
|
+
### Quality Gates
|
|
84
|
+
|
|
85
|
+
Configure pass/fail thresholds at Project Settings > Quality Gate:
|
|
86
|
+
- Coverage < 80%
|
|
87
|
+
- Duplicated Lines > 3%
|
|
88
|
+
- Maintainability Rating worse than A
|
|
89
|
+
- Reliability Rating worse than A
|
|
90
|
+
- Security Rating worse than A
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Execution
|
|
95
|
+
|
|
96
|
+
### Installation Options
|
|
97
|
+
|
|
98
|
+
**Option 1: NPM (Recommended for Node.js projects)**
|
|
99
|
+
```bash
|
|
100
|
+
npm install -g sonarqube-scanner
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Option 2: Docker (Platform-agnostic)**
|
|
104
|
+
```bash
|
|
105
|
+
# No installation required, run directly
|
|
106
|
+
docker run --rm -v $(pwd):/usr/src sonarsource/sonar-scanner-cli
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Option 3: Direct Download**
|
|
110
|
+
```bash
|
|
111
|
+
# Download from https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
|
|
112
|
+
# Extract and add bin/ directory to PATH
|
|
113
|
+
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856.zip
|
|
114
|
+
unzip sonar-scanner-cli-4.8.0.2856.zip
|
|
115
|
+
export PATH=$PATH:$PWD/sonar-scanner-4.8.0.2856/bin
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Running Analysis
|
|
119
|
+
|
|
120
|
+
**Primary Command (sonar-scanner CLI)**
|
|
121
|
+
```bash
|
|
122
|
+
sonar-scanner \
|
|
123
|
+
-Dsonar.projectKey=my-project \
|
|
124
|
+
-Dsonar.sources=src \
|
|
125
|
+
-Dsonar.host.url=http://localhost:9000 \
|
|
126
|
+
-Dsonar.token=$SONAR_TOKEN
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Docker Variant**
|
|
130
|
+
```bash
|
|
131
|
+
docker run --rm \
|
|
132
|
+
-e SONAR_HOST_URL="http://host.docker.internal:9000" \
|
|
133
|
+
-e SONAR_TOKEN="$SONAR_TOKEN" \
|
|
134
|
+
-v "$(pwd):/usr/src" \
|
|
135
|
+
sonarsource/sonar-scanner-cli \
|
|
136
|
+
-Dsonar.projectKey=my-project
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**With Coverage Reports**
|
|
140
|
+
```bash
|
|
141
|
+
sonar-scanner \
|
|
142
|
+
-Dsonar.projectKey=my-project \
|
|
143
|
+
-Dsonar.sources=src \
|
|
144
|
+
-Dsonar.tests=tests \
|
|
145
|
+
-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info \
|
|
146
|
+
-Dsonar.host.url=http://localhost:9000 \
|
|
147
|
+
-Dsonar.token=$SONAR_TOKEN
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Parameters Reference
|
|
151
|
+
|
|
152
|
+
| Parameter | Description | Required |
|
|
153
|
+
|-----------|-------------|----------|
|
|
154
|
+
| `sonar.projectKey` | Unique project identifier | Yes |
|
|
155
|
+
| `sonar.sources` | Comma-separated source directories | Yes |
|
|
156
|
+
| `sonar.host.url` | SonarQube server URL | Yes |
|
|
157
|
+
| `sonar.token` | Authentication token (generate in SonarQube UI) | Yes |
|
|
158
|
+
| `sonar.tests` | Test source directories | No |
|
|
159
|
+
| `sonar.exclusions` | Files to exclude from analysis | No |
|
|
160
|
+
| `sonar.java.binaries` | Compiled class files (Java projects) | Conditional |
|
|
161
|
+
| `sonar.python.coverage.reportPaths` | Coverage report path (Python) | No |
|
|
162
|
+
| `sonar.javascript.lcov.reportPaths` | LCOV coverage report (JavaScript) | No |
|
|
163
|
+
|
|
164
|
+
**Runtime**: 2-15 minutes depending on project size, language analyzers, and server performance.
|
|
165
|
+
|
|
166
|
+
### Retrieving Results via Web API
|
|
167
|
+
|
|
168
|
+
After analysis completes, fetch results using SonarQube REST API:
|
|
169
|
+
|
|
170
|
+
**1. Issues Endpoint**
|
|
171
|
+
```bash
|
|
172
|
+
curl -u "$SONAR_TOKEN:" \
|
|
173
|
+
"http://localhost:9000/api/issues/search?componentKeys=my-project&severities=BLOCKER,CRITICAL,MAJOR&ps=500"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**2. Measures Endpoint**
|
|
177
|
+
```bash
|
|
178
|
+
curl -u "$SONAR_TOKEN:" \
|
|
179
|
+
"http://localhost:9000/api/measures/component?component=my-project&metricKeys=complexity,cognitive_complexity,duplicated_lines_density,coverage,bugs,code_smells,vulnerabilities"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**3. Quality Gate Status**
|
|
183
|
+
```bash
|
|
184
|
+
curl -u "$SONAR_TOKEN:" \
|
|
185
|
+
"http://localhost:9000/api/qualitygates/project_status?projectKey=my-project"
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Authentication**: Use `SONAR_TOKEN` environment variable (generate at User > My Account > Security > Generate Tokens)
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Output Format
|
|
193
|
+
|
|
194
|
+
### Issues Endpoint Response
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"total": 247,
|
|
199
|
+
"p": 1,
|
|
200
|
+
"ps": 500,
|
|
201
|
+
"paging": {
|
|
202
|
+
"pageIndex": 1,
|
|
203
|
+
"pageSize": 500,
|
|
204
|
+
"total": 247
|
|
205
|
+
},
|
|
206
|
+
"issues": [
|
|
207
|
+
{
|
|
208
|
+
"key": "AYcX3mKJQZ8vK4pQxY6L",
|
|
209
|
+
"rule": "javascript:S3776",
|
|
210
|
+
"severity": "CRITICAL",
|
|
211
|
+
"component": "my-project:src/services/paymentProcessor.js",
|
|
212
|
+
"project": "my-project",
|
|
213
|
+
"line": 47,
|
|
214
|
+
"hash": "8b6f3c21a4d5e9f1",
|
|
215
|
+
"textRange": {
|
|
216
|
+
"startLine": 47,
|
|
217
|
+
"endLine": 132,
|
|
218
|
+
"startOffset": 0,
|
|
219
|
+
"endOffset": 5
|
|
220
|
+
},
|
|
221
|
+
"flows": [],
|
|
222
|
+
"status": "OPEN",
|
|
223
|
+
"message": "Refactor this function to reduce its Cognitive Complexity from 42 to the 15 allowed.",
|
|
224
|
+
"effort": "1h30min",
|
|
225
|
+
"debt": "1h30min",
|
|
226
|
+
"author": "john.doe@example.com",
|
|
227
|
+
"tags": ["brain-overload"],
|
|
228
|
+
"type": "CODE_SMELL",
|
|
229
|
+
"scope": "MAIN",
|
|
230
|
+
"creationDate": "2026-02-10T14:23:11+0000",
|
|
231
|
+
"updateDate": "2026-02-10T14:23:11+0000"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"key": "AYcX3mKJQZ8vK4pQxY6M",
|
|
235
|
+
"rule": "javascript:S1854",
|
|
236
|
+
"severity": "MAJOR",
|
|
237
|
+
"component": "my-project:src/utils/formatter.js",
|
|
238
|
+
"project": "my-project",
|
|
239
|
+
"line": 89,
|
|
240
|
+
"hash": "c7d2a8e4f1b9c5d3",
|
|
241
|
+
"textRange": {
|
|
242
|
+
"startLine": 89,
|
|
243
|
+
"endLine": 89,
|
|
244
|
+
"startOffset": 8,
|
|
245
|
+
"endOffset": 23
|
|
246
|
+
},
|
|
247
|
+
"flows": [],
|
|
248
|
+
"status": "OPEN",
|
|
249
|
+
"message": "Remove this useless assignment to local variable 'tempResult'.",
|
|
250
|
+
"effort": "5min",
|
|
251
|
+
"debt": "5min",
|
|
252
|
+
"author": "jane.smith@example.com",
|
|
253
|
+
"tags": ["unused"],
|
|
254
|
+
"type": "CODE_SMELL",
|
|
255
|
+
"scope": "MAIN",
|
|
256
|
+
"creationDate": "2026-02-10T14:23:11+0000",
|
|
257
|
+
"updateDate": "2026-02-10T14:23:11+0000"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"key": "AYcX3mKJQZ8vK4pQxY6N",
|
|
261
|
+
"rule": "javascript:S2583",
|
|
262
|
+
"severity": "BLOCKER",
|
|
263
|
+
"component": "my-project:src/controllers/userController.js",
|
|
264
|
+
"project": "my-project",
|
|
265
|
+
"line": 156,
|
|
266
|
+
"hash": "f3e8d9c2b1a7e4d6",
|
|
267
|
+
"textRange": {
|
|
268
|
+
"startLine": 156,
|
|
269
|
+
"endLine": 156,
|
|
270
|
+
"startOffset": 12,
|
|
271
|
+
"endOffset": 42
|
|
272
|
+
},
|
|
273
|
+
"flows": [],
|
|
274
|
+
"status": "OPEN",
|
|
275
|
+
"message": "Change this condition so that it does not always evaluate to 'true'.",
|
|
276
|
+
"effort": "15min",
|
|
277
|
+
"debt": "15min",
|
|
278
|
+
"author": "alice.jones@example.com",
|
|
279
|
+
"tags": ["bug"],
|
|
280
|
+
"type": "BUG",
|
|
281
|
+
"scope": "MAIN",
|
|
282
|
+
"creationDate": "2026-02-10T14:23:11+0000",
|
|
283
|
+
"updateDate": "2026-02-10T14:23:11+0000"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"key": "AYcX3mKJQZ8vK4pQxY6O",
|
|
287
|
+
"rule": "javascript:S4829",
|
|
288
|
+
"severity": "CRITICAL",
|
|
289
|
+
"component": "my-project:src/api/authHandler.js",
|
|
290
|
+
"project": "my-project",
|
|
291
|
+
"line": 234,
|
|
292
|
+
"hash": "a9c8f7e6d5b4c3d2",
|
|
293
|
+
"textRange": {
|
|
294
|
+
"startLine": 234,
|
|
295
|
+
"endLine": 234,
|
|
296
|
+
"startOffset": 15,
|
|
297
|
+
"endOffset": 58
|
|
298
|
+
},
|
|
299
|
+
"flows": [],
|
|
300
|
+
"status": "OPEN",
|
|
301
|
+
"message": "Make sure that this logger's configuration is safe.",
|
|
302
|
+
"effort": "30min",
|
|
303
|
+
"debt": "30min",
|
|
304
|
+
"author": "bob.wilson@example.com",
|
|
305
|
+
"tags": ["cwe", "owasp-a9", "privacy"],
|
|
306
|
+
"type": "VULNERABILITY",
|
|
307
|
+
"scope": "MAIN",
|
|
308
|
+
"creationDate": "2026-02-10T14:23:11+0000",
|
|
309
|
+
"updateDate": "2026-02-10T14:23:11+0000"
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"components": [
|
|
313
|
+
{
|
|
314
|
+
"key": "my-project:src/services/paymentProcessor.js",
|
|
315
|
+
"enabled": true,
|
|
316
|
+
"qualifier": "FIL",
|
|
317
|
+
"name": "paymentProcessor.js",
|
|
318
|
+
"longName": "src/services/paymentProcessor.js",
|
|
319
|
+
"path": "src/services/paymentProcessor.js"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"key": "my-project:src/utils/formatter.js",
|
|
323
|
+
"enabled": true,
|
|
324
|
+
"qualifier": "FIL",
|
|
325
|
+
"name": "formatter.js",
|
|
326
|
+
"longName": "src/utils/formatter.js",
|
|
327
|
+
"path": "src/utils/formatter.js"
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
"rules": [
|
|
331
|
+
{
|
|
332
|
+
"key": "javascript:S3776",
|
|
333
|
+
"name": "Cognitive Complexity of functions should not be too high",
|
|
334
|
+
"lang": "js",
|
|
335
|
+
"status": "READY",
|
|
336
|
+
"langName": "JavaScript"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"key": "javascript:S1854",
|
|
340
|
+
"name": "Unused assignments should be removed",
|
|
341
|
+
"lang": "js",
|
|
342
|
+
"status": "READY",
|
|
343
|
+
"langName": "JavaScript"
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### Measures Endpoint Response
|
|
350
|
+
|
|
351
|
+
```json
|
|
352
|
+
{
|
|
353
|
+
"component": {
|
|
354
|
+
"key": "my-project",
|
|
355
|
+
"name": "My Project",
|
|
356
|
+
"qualifier": "TRK",
|
|
357
|
+
"measures": [
|
|
358
|
+
{
|
|
359
|
+
"metric": "complexity",
|
|
360
|
+
"value": "1847",
|
|
361
|
+
"bestValue": false
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"metric": "cognitive_complexity",
|
|
365
|
+
"value": "1243",
|
|
366
|
+
"bestValue": false
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"metric": "duplicated_lines_density",
|
|
370
|
+
"value": "7.8",
|
|
371
|
+
"bestValue": false
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"metric": "coverage",
|
|
375
|
+
"value": "68.3",
|
|
376
|
+
"bestValue": false
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"metric": "bugs",
|
|
380
|
+
"value": "23",
|
|
381
|
+
"bestValue": false
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"metric": "code_smells",
|
|
385
|
+
"value": "187",
|
|
386
|
+
"bestValue": false
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"metric": "vulnerabilities",
|
|
390
|
+
"value": "5",
|
|
391
|
+
"bestValue": false
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"metric": "security_hotspots",
|
|
395
|
+
"value": "12",
|
|
396
|
+
"bestValue": false
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"metric": "duplicated_blocks",
|
|
400
|
+
"value": "34"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"metric": "ncloc",
|
|
404
|
+
"value": "15623"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"metric": "reliability_rating",
|
|
408
|
+
"value": "3.0"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"metric": "security_rating",
|
|
412
|
+
"value": "2.0"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"metric": "sqale_rating",
|
|
416
|
+
"value": "2.0"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"metric": "sqale_index",
|
|
420
|
+
"value": "1847"
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Normalization
|
|
430
|
+
|
|
431
|
+
Map SonarQube raw output to Radar signal schema for domain processing.
|
|
432
|
+
|
|
433
|
+
### Field Mapping Table
|
|
434
|
+
|
|
435
|
+
| Radar Signal Field | SonarQube Source | Mapping Logic |
|
|
436
|
+
|--------------------|------------------|---------------|
|
|
437
|
+
| `signal_id` | Generated | Pattern: `S-SQ-{NNN}` (sequential) |
|
|
438
|
+
| `source_tool` | Static | Always `"sonarqube"` |
|
|
439
|
+
| `raw_severity` | `issue.severity` | Preserve original: BLOCKER, CRITICAL, MAJOR, MINOR, INFO |
|
|
440
|
+
| `normalized_severity` | `issue.severity` | Map: BLOCKER→critical, CRITICAL→high, MAJOR→medium, MINOR→low, INFO→informational |
|
|
441
|
+
| `rule_id` | `issue.rule` | Direct copy (e.g., "javascript:S3776") |
|
|
442
|
+
| `category` | `issue.type` | Map: BUG→correctness, VULNERABILITY→security, CODE_SMELL→maintainability |
|
|
443
|
+
| `message` | `issue.message` | Direct copy |
|
|
444
|
+
| `file_path` | `issue.component` | Extract path portion after project key |
|
|
445
|
+
| `line_start` | `issue.textRange.startLine` | Direct copy (null if file-level issue) |
|
|
446
|
+
| `line_end` | `issue.textRange.endLine` | Direct copy (null if file-level issue) |
|
|
447
|
+
| `domain_relevance` | Derived from `issue.type` | BUG→[03], VULNERABILITY→[05], CODE_SMELL→[09,01] |
|
|
448
|
+
| `confidence_estimate` | `issue.type` + rule reliability | BUG→high, VULNERABILITY→medium, CODE_SMELL→medium (adjustable by rule) |
|
|
449
|
+
| `blast_radius` | `issue.textRange` + `issue.scope` | File-level→localized, Cross-file→moderate, Project-level→extensive |
|
|
450
|
+
| `effort_minutes` | `issue.effort` | Parse duration string (e.g., "1h30min" → 90) |
|
|
451
|
+
| `tags` | `issue.tags` | Direct copy as array |
|
|
452
|
+
| `metadata.project_key` | `issue.project` | Store for traceability |
|
|
453
|
+
| `metadata.issue_key` | `issue.key` | Store for traceability |
|
|
454
|
+
| `metadata.creation_date` | `issue.creationDate` | ISO 8601 timestamp |
|
|
455
|
+
|
|
456
|
+
### Severity Mapping
|
|
457
|
+
|
|
458
|
+
| SonarQube Severity | Radar Normalized Severity |
|
|
459
|
+
|--------------------|---------------------------|
|
|
460
|
+
| BLOCKER | critical |
|
|
461
|
+
| CRITICAL | high |
|
|
462
|
+
| MAJOR | medium |
|
|
463
|
+
| MINOR | low |
|
|
464
|
+
| INFO | informational |
|
|
465
|
+
|
|
466
|
+
### Issue Type to Domain Mapping
|
|
467
|
+
|
|
468
|
+
| SonarQube Type | Primary Domain(s) | Category |
|
|
469
|
+
|----------------|-------------------|----------|
|
|
470
|
+
| BUG | 03 (Correctness) | correctness |
|
|
471
|
+
| VULNERABILITY | 05 (Security) | security |
|
|
472
|
+
| CODE_SMELL | 09 (Maintainability), 01 (Architecture) | maintainability |
|
|
473
|
+
| SECURITY_HOTSPOT | 05 (Security) | security |
|
|
474
|
+
|
|
475
|
+
### Metric Signals (Measures Endpoint)
|
|
476
|
+
|
|
477
|
+
Create aggregate signals from measures endpoint for Transform agent consumption:
|
|
478
|
+
|
|
479
|
+
| Metric | Signal Type | Transform Input Mapping |
|
|
480
|
+
|--------|-------------|-------------------------|
|
|
481
|
+
| `complexity` | Complexity | `architectural_tension_input` |
|
|
482
|
+
| `cognitive_complexity` | Complexity | `architectural_tension_input` |
|
|
483
|
+
| `duplicated_lines_density` | Duplication | `coupling_risk_input` |
|
|
484
|
+
| `duplicated_blocks` | Duplication | `coupling_risk_input` |
|
|
485
|
+
| `coverage` | Coverage | `regression_probability_input` (inverse: low coverage = high risk) |
|
|
486
|
+
| `bugs` | Count | Inform Correctness domain (03) |
|
|
487
|
+
| `code_smells` | Count | Inform Maintainability domain (09) |
|
|
488
|
+
| `vulnerabilities` | Count | Inform Security domain (05) |
|
|
489
|
+
|
|
490
|
+
### Normalization Notes
|
|
491
|
+
|
|
492
|
+
1. **Deduplication**: SonarQube may report same issue across branches. Use `issue.hash` + `issue.component` for deduplication across analyses.
|
|
493
|
+
|
|
494
|
+
2. **Metric vs Issue Signals**:
|
|
495
|
+
- Issue signals (from `/api/issues/search`) are specific, localized findings
|
|
496
|
+
- Metric signals (from `/api/measures/component`) are aggregate, project-level indicators
|
|
497
|
+
- Both feed domains differently: issues as evidence, metrics as context
|
|
498
|
+
|
|
499
|
+
3. **Confidence Estimation**:
|
|
500
|
+
- BUG type: High confidence (static analysis proven patterns)
|
|
501
|
+
- VULNERABILITY: Medium confidence (may require runtime context)
|
|
502
|
+
- CODE_SMELL: Medium confidence (subjective, depends on context)
|
|
503
|
+
- Adjust based on rule maturity and false positive history
|
|
504
|
+
|
|
505
|
+
4. **Transform Change-Risk Mapping**:
|
|
506
|
+
- Complexity metrics (cognitive_complexity, complexity) feed architectural tension calculations
|
|
507
|
+
- Duplication density feeds coupling risk estimation (duplicated code = implicit coupling)
|
|
508
|
+
- Coverage feeds regression probability (inverse relationship: coverage < 70% = high regression risk)
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## Limitations
|
|
513
|
+
|
|
514
|
+
### Cannot Detect
|
|
515
|
+
|
|
516
|
+
1. **Business Logic Errors**: SonarQube detects syntactic and structural issues, not semantic correctness. Cannot validate business rules, domain invariants, or workflow logic correctness.
|
|
517
|
+
|
|
518
|
+
2. **Runtime-Only Issues**: Cannot detect race conditions, deadlocks, memory leaks, performance bottlenecks, or resource exhaustion that only manifest during execution under specific loads.
|
|
519
|
+
|
|
520
|
+
3. **Deep Security Vulnerabilities**: Limited to pattern-based security rules. Cannot detect complex vulnerabilities like authentication bypasses, authorization flaws, or cryptographic weaknesses requiring semantic analysis. Use Semgrep or Trivy for deeper security coverage.
|
|
521
|
+
|
|
522
|
+
4. **Dynamically Generated Code**: Cannot analyze code generated at runtime, macro-expanded code, or template-generated sources that don't exist as static files during scan.
|
|
523
|
+
|
|
524
|
+
5. **Cross-Service Architectural Issues**: Analyzes single project in isolation. Cannot detect distributed system issues like service coupling, API contract violations, or inter-service dependency cycles.
|
|
525
|
+
|
|
526
|
+
6. **Configuration Issues**: Limited detection of infrastructure misconfigurations, deployment issues, or environment-specific problems.
|
|
527
|
+
|
|
528
|
+
### False Positives
|
|
529
|
+
|
|
530
|
+
1. **Intentional Complexity**: State machines, parsers, protocol implementations, and generated code may legitimately have high cyclomatic/cognitive complexity. Domain context required to distinguish justified complexity.
|
|
531
|
+
|
|
532
|
+
2. **Duplication in Test Fixtures**: Test data, mock objects, and configuration files often contain intentional duplication for clarity. SonarQube flags these as code smells without test-specific context.
|
|
533
|
+
|
|
534
|
+
3. **Legacy Code Stability**: Mature, well-tested legacy code with code smells may be low-risk to leave unchanged. SonarQube severity doesn't account for historical stability or cost-of-change.
|
|
535
|
+
|
|
536
|
+
4. **Language Idioms**: Idiomatic patterns in specific languages (e.g., Python's `__init__` methods, Go's error handling) may trigger generic rules designed for other languages.
|
|
537
|
+
|
|
538
|
+
### False Negatives
|
|
539
|
+
|
|
540
|
+
1. **Unsupported Languages**: Limited or no analyzer support for niche languages, DSLs, or newer language versions. JavaScript/TypeScript/Java have strong support; Rust, Elixir, Clojure have gaps.
|
|
541
|
+
|
|
542
|
+
2. **Logic Errors with Valid Syntax**: Type-safe code with incorrect business logic passes all checks. Example: `if (user.age > 18)` when requirement is `>= 18`.
|
|
543
|
+
|
|
544
|
+
3. **Multi-Repository Architectural Issues**: Cannot detect cross-repo coupling, duplicated logic across microservices, or inconsistent patterns across organizational boundaries.
|
|
545
|
+
|
|
546
|
+
4. **Performance Anti-Patterns**: Misses N+1 queries, inefficient algorithms with correct syntax, or resource-intensive operations that don't violate structural rules.
|
|
547
|
+
|
|
548
|
+
5. **Subtle Concurrency Issues**: Cannot detect most thread-safety issues, visibility problems, or lock contention patterns that require runtime analysis or formal verification.
|
|
549
|
+
|
|
550
|
+
6. **Context-Dependent Vulnerabilities**: Misses vulnerabilities that depend on deployment context, data flow across services, or runtime configuration values.
|