✨ Diagnostic Manager
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par localiser les composants Issue Navigator et Line Annotations de l’éditeur, puis suivez la manière dont ils reçoivent actuellement les données de diagnostic. Définissez DiagnosticManager et DiagnosticIssue autour des exigences, en regroupant les mises à jour par fichier et par changements observables ; le travail est terminé lorsque les deux composants peuvent utiliser le manager comme source de diagnostic partagée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Introduce a DiagnosticManager responsible for managing and publishing diagnostics (e.g., build errors, linter warnings, language server issues) grouped by file. This manager will serve as the single source of truth for diagnostics across the editor, and its contents will drive visual components such as the Issue Navigator and Line Annotations.
Requirements
- Create a
DiagnosticManagerclass conforming toObservableObject - Store diagnostics as a flat list or grouped by file:
@Published var issues: [DiagnosticIssue] - Define a
DiagnosticIssuemodel:struct DiagnosticIssue: Identifiable, Hashable { let id: UUID = UUID() let file: URL let line: Int let column: Int? let message: String let severity: Severity let source: String? let fixItSuggestion: String? enum Severity { case error, warning, info, live } } - Add convenience accessors:
var issuesByFile: [URL: [DiagnosticIssue]] func issues(for file: URL) -> [DiagnosticIssue] - Add a way to update issues by file, e.g.:
func setIssues(_ issues: [DiagnosticIssue], for file: URL) func clearIssues(for file: URL)
Additional Context
This manager will be used by multiple parts of the app, including the Issue Navigator and Line Annotations. It should be reactive and efficient, allowing UI components to automatically update when diagnostics change.
Future extensions may include filtering, debouncing updates, or supporting different diagnostics sources (build system, LSP, etc.).
Related Issues
- Langage dominant
- Swift
- Étoiles
- 23k
- Forks
- 1.2k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de CodeEditApp/CodeEdit
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
CodeEditApp/CodeEdit#2190 ·
-
Is this project dead? Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 15/100
CodeEditApp/CodeEdit#2195 · 7 réactions ·
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
CodeEditApp/CodeEdit#2185 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
CodeEditApp/CodeEdit#2181 ·
-
creashes on starting Ouvertebug
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
CodeEditApp/CodeEdit#2180 ·
Toutes les issues de CodeEditApp/CodeEdit
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Cocoanetics/SwiftACP#52 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
storyblok/storyblok-swift#12 ·
-
bug yapback
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100