Chapter 10Lesson 01~95 minutes

Issues, Statuses, Assignments, False Positives, and Resolution Workflow: Core Concepts and Mental Model

Learn how a SonarQube finding becomes an owned, auditable remediation decision without confusing workflow metadata with a source-code fix.

Issue lifecycleAssignmentAcceptedFalse positiveAudit trail

Learning objectives

  • Separate issue identity, source revision, status, assignment, comments/tags, rule context, and quality-gate state.
  • Explain the current Open, Accepted, False positive, and Fixed lifecycle without legacy resolution terminology.
  • Distinguish SCM issue author metadata from accountable remediation ownership.
  • Explain why issue workflow metadata can affect quality reporting without changing source code.
  • Inspect issue history and rule context before mutating workflow state.

1. Findings need decisions, not cosmetic closure

Static analysis can create findings faster than a team can responsibly remediate them. The operational problem is therefore not merely “how do I close an issue?” It is how to preserve revision, rule, location, owner, decision, rationale, and reanalysis evidence so another engineer can reconstruct why the signal changed.

Marking an issue Accepted or False positive changes SonarQube-managed workflow state. It does not edit Git. Likewise, changing source does not prove the SonarQube issue is fixed until a later analysis processes that revision and no longer detects the finding.

Governance boundary: the objective is not to make a dashboard green. It is to distinguish a real source fix, an explicit deferral, a true analyzer mistake, and an inappropriate suppression.

2. Mental model: finding to governed evidence

Issue remediation evidence chain

Each arrow changes either source state, SonarQube workflow state, or the evidence used to govern a delivery decision.

flowchart TD
A[Analyzed revision] --> B[Rule finding / issue identity]
B --> C[Triage + ownership]
C --> D{Decision}
D -->|Fix source| E[New revision]
D -->|Accept temporarily| F[Workflow metadata + rationale]
D -->|False positive only if analyzer is wrong| G[Workflow metadata + rationale]
E --> H[Reanalysis]
F --> H
G --> H
H --> I[Issue lifecycle + Activity history]
I --> J[Measures / gate / governance evidence]

Issue identity ties a finding to a project, rule, and code location. Assignee expresses current workflow ownership. Accepted and False positive are dispositions, not substitute commits. Reanalysis reconciles the newest source with durable server state.

3. Current Community Build lifecycle

Status Set by Meaning Does not prove
Open SonarQube on detection, or a user reopening Active for review/remediation. Who is accountable or that a fix is underway.
Accepted Authorized user Valid finding deliberately deferred/not fixed now. That source was repaired.
False positive Authorized user Analyzer is mistaken for this code/context. That the finding is merely low priority.
Fixed SonarQube after later analysis Previously detected issue is no longer found. A manual promise by a developer.

The UI may use an action such as Resolve while changing a status, but “Resolved” is not the current durable status model. Legacy Confirmed, Won’t Fix, Closed, and old resolution fields belong to earlier SonarQube generations.

4. Do not blur these state stores

State Owner Useful evidence Common confusion
Source revision Git/SCM commit SHA, diff Claiming a workflow click fixed code.
Issue identity/location Analysis result issue key, rule key, file/line Reasoning from counts without knowing which finding changed.
Status/history SonarQube project state Open/Accepted/False positive/Fixed, Activity Using metadata to hide unresolved risk.
Author SCM-derived last committer correlation Treating blame as accountability.
Assignee SonarQube workflow current assignee Assuming assignment changes source.
Rule/profile Quality policy rule key, profile, parameters Marking many false positives instead of correcting policy.
Gate/measures Computed result gate and measure evidence Assuming a gate change implies a code change.

5. SCM author is not remediation ownership

SonarQube can correlate SCM metadata to users and automatically assign a new issue to the last committer on the affected line. That is useful routing evidence, but the last committer may only have moved code, performed a refactor, or inherited an older defect.

Use the assignee field to express who owns the next action. Preserve reassignment history. A good policy can use SCM-assisted assignment as a starting signal while allowing explicit team/component ownership to override it.

Author answers a historical SCM question. Assignee answers a current workflow question. Neither proves who originally introduced the problem.

6. Accepted and False positive are high-impact metadata

Current Community Build ignores Accepted and False positive issues in quality reports and ratings. Related measures and a relevant quality gate can therefore update without any Git revision change.

Use Accepted for a valid finding that is deliberately deferred/not fixed now; record a reason, owner, and review condition. Use False positive only when the analyzer is actually mistaken for the code/context. “We do not want to fix it” is not a false positive.

These status changes require the project’s Administer Issues permission and can be reopened. Rollback should restore current state while preserving Activity history.

7. Read-only inspection first

  1. Record project key, Git SHA, analysis date, and task evidence.
  2. Filter project Issues to the current Open population.
  3. For one issue record issue key, rule key, file/line, message, impact/severity, author, and assignee.
  4. Read the rule details before deciding the analyzer is wrong.
  5. Open the issue Activity tab and preserve current history.
  6. Record the current quality gate and the condition actually relevant to the finding population.
  7. Only then decide whether the next action belongs in source, workflow, quality policy, or ownership routing.

8. Why this matters in DevOps

Release policy is trustworthy only when its exceptions are governed. SonarQube issue workflow sits between automated detection and human remediation: it can route work and preserve rationale, or it can become a way to suppress inconvenient findings.

The production invariant for this chapter is revision + issue identity + decision + owner + evidence + reanalysis. Chapter 11 will enforce quality gates on top of these signals, so issue workflow must be auditable first.

Knowledge check

A valid issue is marked Accepted. What changed?

Who sets Fixed in the current model?

Is SCM author automatically the accountable owner?

When is False positive appropriate?

Why can the same Git SHA produce a different gate-relevant result after triage?

Next lesson

Move from mental model to controlled remediation

Lesson 2 creates a disposable project, records real findings, assigns ownership, fixes one issue in source, performs one justified temporary Accepted action, and compares reanalysis/history evidence.

Official references and version notes

Version and compatibility note

Rechecked 2026-09-07. Mandatory examples target SonarQube Community Build 26.9.0.129388 (released 2026-09-03) and SonarScanner CLI 8.1.0.6389 (released 2026-04-21). Current Community Build issue workflow uses Open, Accepted, False positive, and automatically determined Fixed. Older tutorials may show deprecated Confirmed/Resolved/Closed or resolution fields; those are not taught as current statuses. No commercial feature, Data Center, SonarQube Cloud, AI CodeFix, enterprise identity, external provider, paid CI, or third-party plugin is required.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0Send only Ethereum/ERC-20 compatible assets to this address.