Example #1
0
        public override async ValueTask ScanAsync(ScanFileContext context)
        {
            using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false);

            var    lineNo = 0;
            string?line;

            while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
            {
                lineNo++;

                var match = s_pypiReferenceRegex.Match(line);
                if (!match.Success)
                {
                    continue;
                }

                // Name==1.2.2
                var packageName  = match.Groups["PACKAGENAME"].Value;
                var versionGroup = match.Groups["VERSION"];
                var version      = versionGroup.Value;

                var column = versionGroup.Index + 1;
                await context.ReportDependency(new Dependency(packageName, version, DependencyType.PyPi, new TextLocation(context.FullPath, lineNo, column, versionGroup.Length))).ConfigureAwait(false);
            }
        }
Example #2
0
        public override async ValueTask ScanAsync(ScanFileContext context)
        {
            try
            {
                using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false);

                using var jsonReader = new JsonTextReader(sr);
                var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false);

                var token = doc.SelectToken("$.sdk.version");
                if (token?.Value <string>() is string version)
                {
                    await context.ReportDependency(new Dependency(".NET SDK", version, DependencyType.DotNetSdk, new JsonLocation(context.FullPath, LineInfo.FromJToken(token), token.Path))).ConfigureAwait(false);
                }

                var sdksToken = doc.SelectToken("$.msbuild-sdks");
                if (sdksToken is JObject sdks)
                {
                    foreach (var sdk in sdks.Properties())
                    {
                        version = sdk.Value.Value <string>();
                        if (version != null)
                        {
                            await context.ReportDependency(new Dependency(sdk.Name, version, DependencyType.NuGet, new JsonLocation(context.FullPath, LineInfo.FromJToken(sdk.Value), sdk.Value.Path))).ConfigureAwait(false);
                        }
                    }
                }
            }
            catch (JsonException)
            {
            }
        }
Example #3
0
        public override async ValueTask ScanAsync(ScanFileContext context)
        {
            try
            {
                using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false);

                using var jsonReader = new JsonTextReader(sr);
                var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false);

                await ExtractSdk(context, doc).ConfigureAwait(false);
                await ExtractMsBuildSdks(context, doc).ConfigureAwait(false);
            }
            catch (JsonException)
            {
            }
        }
Example #4
0
        public override async ValueTask ScanAsync(ScanFileContext context)
        {
            try
            {
                using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false);

                using var jsonReader = new JsonTextReader(sr);
                var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false);

                foreach (var deps in doc.SelectTokens("$..dependencies").Concat(doc.SelectTokens("$.tools")).OfType <JObject>())
                {
                    foreach (var dep in deps.Properties())
                    {
                        JToken valueElement = dep;
                        var    packageName  = dep.Name;
                        string?version;
                        if (dep.Value.Type == JTokenType.String)
                        {
                            version = dep.Value.Value <string>();
                        }
                        else if (dep.Value.Type == JTokenType.Object)
                        {
                            var token = dep.Value.SelectToken("$.version");
                            if (token == null)
                            {
                                continue;
                            }

                            version      = token.Value <string>();
                            valueElement = token;
                        }
                        else
                        {
                            continue;
                        }

                        if (version != null)
                        {
                            await context.ReportDependency(new Dependency(packageName, version, DependencyType.NuGet, new JsonLocation(context.FullPath, LineInfo.FromJToken(dep), valueElement.Path))).ConfigureAwait(false);
                        }
                    }
                }
            }
            catch (JsonException)
            {
            }
        }
        public override async ValueTask ScanAsync(ScanFileContext context)
        {
            try
            {
                using var sr = await StreamUtilities.CreateReaderAsync(context.Content, context.CancellationToken).ConfigureAwait(false);

                using var jsonReader = new JsonTextReader(sr);
                var doc = await JToken.ReadFromAsync(jsonReader, context.CancellationToken).ConfigureAwait(false);

                // https://docs.npmjs.com/files/package.json#dependencies
                foreach (var deps in doc.SelectTokens("$.dependencies").OfType <JObject>())
                {
                    await ScanDependenciesAsync(context, deps).ConfigureAwait(false);
                }

                // https://docs.npmjs.com/files/package.json#devdependencies
                foreach (var deps in doc.SelectTokens("$.devDependencies").OfType <JObject>())
                {
                    await ScanDependenciesAsync(context, deps).ConfigureAwait(false);
                }

                // https://docs.npmjs.com/files/package.json#peerdependencies
                foreach (var deps in doc.SelectTokens("$.peerDependencies").OfType <JObject>())
                {
                    await ScanDependenciesAsync(context, deps).ConfigureAwait(false);
                }

                // https://docs.npmjs.com/files/package.json#optionaldependencies
                foreach (var deps in doc.SelectTokens("$.optionaldependencies").OfType <JObject>())
                {
                    await ScanDependenciesAsync(context, deps).ConfigureAwait(false);
                }
            }
            catch (JsonException)
            {
            }
        }