public override async ValueTask ScanAsync(ScanFileContext context) { if (RegexPattern == null) { return; } using var sr = new StreamReader(context.Content); var text = await sr.ReadToEndAsync().ConfigureAwait(false); foreach (Match match in Regex.Matches(text, RegexPattern, RegexOptions.ExplicitCapture, TimeSpan.FromSeconds(10))) { Debug.Assert(match.Success); var name = match.Groups[NameGroupName].Value; var versionGroup = match.Groups[VersionGroupName]; var version = versionGroup.Value; if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(version)) { var location = TextLocation.FromIndex(context.FullPath, text, versionGroup.Index, versionGroup.Length); await context.ReportDependency(new Dependency(name, version, DependencyType, location)).ConfigureAwait(false); } } }