✨ Diagnostic Manager
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách xác định các component Issue Navigator và Line Annotations của editor, sau đó lần theo cách chúng hiện đang nhận dữ liệu chẩn đoán. Xác định DiagnosticManager và DiagnosticIssue dựa trên các yêu cầu, nhóm các cập nhật theo file và các thay đổi có thể quan sát được; công việc được xem là hoàn tất khi cả hai component đều có thể sử dụng manager làm nguồn chẩn đoán dùng chung.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Swift
- Star
- 23k
- Fork
- 1.2k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của CodeEditApp/CodeEdit
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
CodeEditApp/CodeEdit#2190 ·
-
Is this project dead? Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 15/100
CodeEditApp/CodeEdit#2195 · 5 reaction ·
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
CodeEditApp/CodeEdit#2185 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
CodeEditApp/CodeEdit#2181 ·
-
creashes on starting Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
CodeEditApp/CodeEdit#2180 ·
Tất cả issue của CodeEditApp/CodeEdit
Issue tương tự
-
The correction-threshold rationale says 17 restraint cases collide; the current corpus has 16 Đang mởarea:dictation documentation P2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
uttrflow/uttrflow-swift#1180 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
OneBusAway/onebusaway-ios#1451 ·
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100