← Back to issue list

Use Craft Application's Linter Service

View original Github issue

Metadata

Project
snapcraft
Number
#5971
Type
issue
State
open
Author
mr-cal
Labels
Status: Triaged Type: Refactor
Created
Updated
Closed
—

Current evaluation

Triaged refactor to replace Snapcraft's bespoke linter runner and reporting with Craft Application's LinterService; the prerequisite is merged, but migration remains unimplemented.

Suggested action: keep open

Reason: The issue is triaged as a refactor and defines three clear migration requirements. The current code still implements its own Linter base and run_linters/report flow across the lint command, lifecycle, and packaging service; craft-application#782 is now available through PR #907 and commit a76bcaa6, but no corresponding Snapcraft implementation exists.

Evaluated by: mr-cal-bot

Impact: 55 Quick Win: 16 Complexity: 66 Confidence: 94 Actionability: 87

Issue body

### Check existing issues - [x] I've verified that this request isn't described by any existing issues. ### Request Migrate to the Linter Service as implemented at https://github.com/canonical/craft-application/issues/782 * All linters are implementations of the Craft Application class * The lint command uses the LinterService * Any other uses of linters use the LinterService ### The problem it solves Snapcraft and Charmcraft lint snaps and charms respectively at the end of the lifecycle. These linters don’t share common code and don’t have a similar UX. Additionally, there isn’t a way to add linters to other *craft apps without significant code duplication. Supersedes #5542

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 55
Quick Win: 16
Complexity: 66
Confidence: 94
Actionability: 87
keep open Triaged refactor to replace Snapcraft's bespoke linter runner and reporting with Craft Application's LinterService; the prerequisite is merged, but migration remains unimplemented.
stealth/space-bunny-alpha
Impact: 45
Quick Win: 11
Complexity: 70
Confidence: 88
Actionability: 78
keep open Maintainer-authored triaged refactor to migrate snapcraft's linters to Craft Application's LinterService. Upstream service merged (craft-application#907); snapcraft still uses its own Linter ABC, LinterStatus and LintCommand. Awaiting implementation.
qwen/qwen3.6-35b-a3b
Impact: 60
Quick Win: 21
Complexity: 50
Confidence: 85
Actionability: 70
keep open Refactor to migrate snapcraft's linters to the Craft Application's LinterService. Previously blocked by upstream dependency (craft-application#907), which is now merged. Issue is triaged and awaiting implementation.
qwen/qwen3.8-27b
Impact: 45
Quick Win: 14
Staleness: 60
Complexity: 70
Confidence: 75
Support Request: 5
keep open Refactor to migrate snapcraft linters to craft-application's LinterService. Triaged and labeled; upstream framework (craft-application#907) is merged, but no code changes yet. Supersedes closed #5542.
qwen/qwen3.6-35b-a3b
Staleness: 60
Complexity: 75
Confidence: 90
Support Request: 10
keep open Refactor to migrate snapcraft and charmcraft linters to the shared Craft Application LinterService. Triaged by a maintainer but inactive for approximately six months with only automated Jira sync comments.
qwen3.6-35b-a3b-mtp-q6
Staleness: 65
Complexity: 45
Confidence: 85
Support Request: 0
keep open Refactor to migrate linters to the shared Craft Application LinterService. Triaged by a maintainer but inactive for ~5.5 months with only automated Jira sync comments.

Update history

No update history recorded yet.

Related work

  • Related To: craft-application#782 (confidence 100%)

    Explicit upstream prerequisite; its LinterService framework was delivered by PR #907 in commit a76bcaa6.

  • Related To: snapcraft#5542 (confidence 100%)

    Explicitly superseded by this issue and previously closed without completing the migration.

  • Related To: charmcraft#2546 (confidence 95%)

    Charmcraft has a separate open migration to the same shared LinterService.

Related issues

Issue Project State Summary Similarity
#2546 Use Craft Application's Linter Service charmcraft open Charmcraft’s triaged refactor to adopt Craft Application’s merged LinterService remains open; 11 custom checkers still run through Charmcraft’s AnalysisService.
84%
#2315 Use Craft Application's Linter Service charmcraft closed LinterService bounty closed without implementation; craft-application#907 delivered the shared service, and Charmcraft migration was retriaged as canonical/charmcraft#2546.
83%
#5542 Use Craft Application's Linter Service snapcraft closed Closed by mr-cal (2026-01-21) as a bounty with no implementation. craft-application#907 (commit a76bcaa6) merged the shared Linter Service, and the migration work was moved to charmcraft#2546, still open.
82%
#141 Add a basic linter service craft-application closed Implemented the extensible linter framework in craft-application by merging PR #907 (commit a76bcaa6), providing shared linter registration and execution for downstream apps.
77%