From 85e5ffb6a9fc14094d4ae641babe73edb0e9cc61 Mon Sep 17 00:00:00 2001 From: Widthdom Date: Fri, 28 Aug 2026 01:35:31 +0900 Subject: [PATCH 1/3] Add first-class CODEOWNERS indexing (#5198) --- DEVELOPER_GUIDE.md | 2 + TESTING_GUIDE.md | 2 + USER_GUIDE.md | 6 + changelog.d/unreleased/5198.added.md | 26 ++ .../Scanning/FileIndexer.FileNameLanguages.cs | 13 + .../Scanning/FileIndexer.LanguageDetection.cs | 70 +++++ .../Symbols/SymbolExtractor.CodeOwners.cs | 277 ++++++++++++++++++ .../Symbols/SymbolExtractor.Contracts.cs | 3 + .../SymbolExtractor.ExtractionPhases.cs | 3 + tests/CodeIndex.Tests/FileIndexerTests.cs | 38 +++ .../IndexCommandRunnerUpdateTests.cs | 49 ++++ .../McpServerToolsCallTests.cs | 12 + .../QueryCommandRunnerFilesTests.cs | 95 ++++++ .../QueryCommandRunnerTests.cs | 18 ++ .../SymbolExtractorRepositoryMetadataTests.cs | 61 ++++ 15 files changed, 675 insertions(+) create mode 100644 changelog.d/unreleased/5198.added.md create mode 100644 src/CodeIndex/Indexer/Symbols/SymbolExtractor.CodeOwners.cs diff --git a/DEVELOPER_GUIDE.md b/DEVELOPER_GUIDE.md index 87722ec8b..fff2fa7d4 100644 --- a/DEVELOPER_GUIDE.md +++ b/DEVELOPER_GUIDE.md @@ -2182,6 +2182,7 @@ Extractor strategy by language surface: | HTML | Uses a dedicated character-level state machine instead of the regex pattern loop. It walks tag openers, quoted/unquoted attribute values including multi-line values, and masks `