feat(linter): add linter service framework
Metadata
Current evaluation
Merged PR #907 as commit a76bcaa6, adding a shared Linter Service for consistent downstream registration and execution of linters and closing craft-application#782.
Resolution: closed resolved
Reason: PR #907 was approved and merged as commit a76bcaa6, delivering the shared linter service framework and resolving issue #782.
Evaluated by: mr-cal-bot
No scores available.
Issue body
- [x] Have you followed the guidelines for contributing?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] Have you successfully run `make lint && make test`?
- [ ] Have you added an entry to the changelog (`docs/reference/changelog.rst`)?
---
Closes #782
This PR introduces a shared Linter Service to craft-application so downstream apps (Snapcraft, Charmcraft) can add and run linters consistently.
The design of the Linter Service is as discussed in #782
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged PR #907 as commit a76bcaa6, adding a shared Linter Service for consistent downstream registration and execution of linters and closing craft-application#782. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged PR #907 as commit a76bcaa6, adding a shared Linter Service so downstream apps can register and run linters consistently. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged a shared Linter Service framework for craft-application, enabling consistent linting across downstream apps. Approved by three reviewers, passed all CI checks, and closed issue #782. |
Update history
No update history recorded yet.
Related work
-
Related To:
craft-application#782
(confidence 100%)
The linter-service design issue explicitly closed by merged PR #907.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #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. | |
| #782 New Linter Service | craft-application | closed | Merged PR #907 (commit a76bcaa6), adding AbstractLinter, LinterService, Testcraft integration, and linter-author documentation; this completed the bounty and closed #782. | |
| #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. | |
| #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. | |
| #451 Handle linters when building (CRAFT-325). | charmcraft | merged | Merged PR #451 (commit 5e30db2a, branch facundobatista/analint08-enforce-linter-maybe, commit 74ec7adc) wiring linters into the build/pack flow: reports errors and warnings, fails on errors unless pack got --force. Depended on merged #449. |