Exemplo n.º 1
0
        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);
                }
            }
        }