Chapter 10Lesson 03~100 minutes

Issues, Statuses, Assignments, False Positives, and Resolution Workflow: Configuration, Design Patterns, and Trade-Offs

Design issue-remediation policy by comparing code fixes, workflow dispositions, bulk triage, suppression, SCM routing, ownership, and auditability.

Policy designBulk triageSuppressionOwnershipTrade-offs

Learning objectives

  • Choose source, workflow, assignment, or profile/scope changes according to the state that is actually wrong.
  • Use bulk changes only for homogeneous, reviewed decisions.
  • Distinguish Accepted, False positive, and broad source suppression.
  • Use SCM-assisted assignment as routing evidence rather than accountability proof.
  • Design workflow exceptions with owner, rationale, audit evidence, and rollback.

1. Ask which state should change

If code is wrong, change code. If the analyzer is wrong, False positive may be appropriate. If the finding is valid but deferred, Accepted records that decision. If only ownership is wrong, reassign. If the rule is systematically unsuitable, review profile/scope rather than rewriting hundreds of issue histories.

2. Decision table: source versus workflow versus policy

Situation Preferred action Evidence Rollback
Correct fixable finding Fix source, commit, reanalyze diff + SHA + CE task + Fixed Git revert if needed
Valid finding deferred Accepted + owner/rationale/review condition Activity + unchanged SHA Reopen
Analyzer demonstrably wrong False positive + technical explanation rule context + reproducer + Activity Reopen
Wrong current owner Reassign/unassign assignee history Reassign
Systematic rule/scope mismatch Review profile or analysis scope population analysis + owner approval Policy rollback

3. Bulk triage needs a homogeneous rationale

Bulk change can assign, tag, or change status for multiple issues. A large filter result is not evidence that every issue deserves the same disposition. Record the filter/query, count, representative samples, decision criterion, approver, and rollback before applying a bulk action.

Never use bulk Accepted or False positive simply to make a quality gate green. Widespread noise should trigger analysis of rule applicability, parameters, generated/vendor scope, and analyzer version.

4. Temporary exception versus source suppression

In many languages //NOSONAR suppresses all issues on a line, including future ones. That is broader than changing the workflow state of one finding. Prefer issue-level workflow when the decision is about one current finding; prefer profile/scope changes when policy is wrong; use source suppression only when its broad, persistent effect is intentionally reviewed as source code.

5. SCM-assisted assignment versus explicit ownership

Automatic assignment to the last committer can reduce triage latency but should not define organizational accountability. Let SCM seed routing where useful, then explicitly reassign by component/team responsibility. Tags/comments can support workflow, but they are not approvals unless your governance process defines them as such.

6. External issues have another system of record

Imported external findings can be managed in SonarQube, but a SonarQube False positive or assignment does not automatically change the state in the external analyzer. Define which system is authoritative and how reconciliation is audited.

7. Least privilege for issue management

Accepted and False positive require Administer Issues on the project. Do not hand out instance administration merely for triage. A Web API User token has all permissions of its issuing user, so automation should use a narrowly permissioned user plus short token lifetime.

Comments are shared by default but may be disabled globally. Tags can mark reviewed states, but tags are metadata and should not silently become approval policy.

8. Worked scenario: one red gate, four causes

Suppose ten new issues contain four source defects, three valid findings blocked by a dependency migration, two findings from generated code that should be excluded, and one suspected analyzer mistake. The correct response is four different state changes: fix source; Accepted only if deferral policy allows; correct generated-code scope; investigate the suspected false positive with a reproducer. One bulk status action would erase those causal distinctions.

Knowledge check

When is bulk issue change appropriate?

Why is //NOSONAR broader than Accepted?

Generated code created hundreds of issues. What should change?

Does SonarQube False positive update an external analyzer?

What permission is appropriate for triage status actions?

Next lesson

Diagnose workflow abuse and evidence failures

Lesson 4 intentionally examines mass status changes, mistaken ownership, legacy status assumptions, and suppression shortcuts, then repairs them from preserved 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.