public static ChangeCalculatorResult CalculateChanges(
            this IChangeCalculator calculator,
            IEnumerable <SyntaxNode> oldNodes,
            IEnumerable <SyntaxNode> newNodes,
            ComparerOptions options)
        {
            calculator = calculator ?? throw new ArgumentNullException(nameof(calculator));
            oldNodes   = oldNodes ?? throw new ArgumentNullException(nameof(oldNodes));
            newNodes   = newNodes ?? throw new ArgumentNullException(nameof(newNodes));
            options    = options ?? throw new ArgumentNullException(nameof(options));

            var oldTypes = ResolveDeclaredTypes(oldNodes);
            var newTypes = ResolveDeclaredTypes(newNodes);

            return(calculator.CalculateChanges(oldTypes, newTypes, options));
        }
        public static async Task <ChangeCalculatorResult> CalculateChanges(
            this IChangeCalculator calculator,
            IEnumerable <CodeSource> oldCode,
            IEnumerable <CodeSource> newCode,
            ComparerOptions options,
            CancellationToken cancellationToken)
        {
            calculator = calculator ?? throw new ArgumentNullException(nameof(calculator));
            oldCode    = oldCode ?? throw new ArgumentNullException(nameof(oldCode));
            newCode    = newCode ?? throw new ArgumentNullException(nameof(newCode));

            // Convert all the old and new code into SyntaxNode objects
            var oldTask = ParseCode(oldCode, cancellationToken);
            var newTask = ParseCode(newCode, cancellationToken);

            await Task.WhenAll(oldTask, newTask).ConfigureAwait(false);

            var oldNodes = oldTask.Result;
            var newNodes = newTask.Result;

            return(CalculateChanges(calculator, oldNodes, newNodes, options));
        }
コード例 #3
0
        public ChangeCalculatorResult CalculateChanges(IEnumerable <ITypeDefinition> oldTypes,
                                                       IEnumerable <ITypeDefinition> newTypes, ComparerOptions options)
        {
            oldTypes = oldTypes ?? throw new ArgumentNullException(nameof(oldTypes));
            newTypes = newTypes ?? throw new ArgumentNullException(nameof(newTypes));

            var result = new ChangeCalculatorResult();

            var changes = _matchProcessor.CalculateChanges(oldTypes, newTypes, options);

            foreach (var change in changes)
            {
                if (change.ChangeType == SemVerChangeType.None)
                {
                    continue;
                }

                _logger?.LogInformation($@"{change.ChangeType}: {change.Message}");

                result.Add(change);
            }

            var changeType = result.ChangeType.ToString().ToLower(CultureInfo.CurrentCulture);

            _logger?.LogInformation("Calculated overall result as a {0} change.", changeType);

            return(result);
        }