From fe16f24a212f5cf96a1b4472e48898ca519009b4 Mon Sep 17 00:00:00 2001 From: tpodolak Date: Sat, 24 Aug 2019 22:58:13 +0200 Subject: [PATCH] [GH-35] - fixing tests --- global.json | 2 +- .../ArgumentMatcherAnalyzer.cs | 8 +++---- .../ArgumentMatcherCompilationAnalyzer.cs | 6 ++--- .../AbstractArgumentMatcherAnalyzer.cs | 22 ++++++++++++------- ...tractArgumentMatcherCompilationAnalyzer.cs | 4 ++-- .../ArgumentMatcherAnalyzer.cs | 8 +++---- .../ArgumentMatcherCompilationAnalyzer.cs | 7 +++--- 7 files changed, 30 insertions(+), 27 deletions(-) diff --git a/global.json b/global.json index 59665f78..3580810e 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "2.2.203" + "version": "2.2.300" } } diff --git a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs index 73edab1a..4d0db535 100644 --- a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs +++ b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs @@ -7,12 +7,10 @@ namespace NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers { [DiagnosticAnalyzer(LanguageNames.CSharp)] - internal class ArgumentMatcherAnalyzer : AbstractArgumentMatcherAnalyzer + internal sealed class ArgumentMatcherAnalyzer : AbstractArgumentMatcherAnalyzer { - private readonly ISubstitutionNodeFinder _substitutionNodeFinder = new SubstitutionNodeFinder(); - public ArgumentMatcherAnalyzer() - : base(new DiagnosticDescriptorsProvider()) + : base(CSharp.DiagnosticDescriptorsProvider.Instance) { } @@ -20,7 +18,7 @@ public ArgumentMatcherAnalyzer() protected override AbstractArgumentMatcherCompilationAnalyzer CreateArgumentMatcherCompilationAnalyzer() { - return new ArgumentMatcherCompilationAnalyzer(_substitutionNodeFinder, DiagnosticDescriptorsProvider); + return new ArgumentMatcherCompilationAnalyzer(SubstitutionNodeFinder.Instance, DiagnosticDescriptorsProvider); } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs index d697d655..7acc1e18 100644 --- a/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs +++ b/src/NSubstitute.Analyzers.CSharp/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs @@ -10,7 +10,7 @@ namespace NSubstitute.Analyzers.CSharp.DiagnosticAnalyzers { - internal class ArgumentMatcherCompilationAnalyzer : AbstractArgumentMatcherCompilationAnalyzer + internal sealed class ArgumentMatcherCompilationAnalyzer : AbstractArgumentMatcherCompilationAnalyzer { private static ImmutableArray> AncestorPaths { get; } = ImmutableArray.Create( ImmutableArray.Create( @@ -35,7 +35,7 @@ protected override SyntaxNode GetOperationSyntax(SyntaxNodeAnalysisContext synta return operation?.Parent?.Syntax; } - protected override List TryGetArgumentExpressions(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode) + protected override IEnumerable TryGetArgumentExpressions(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode) { SeparatedSyntaxList argumentList = default; switch (syntaxNode) @@ -48,7 +48,7 @@ protected override List TryGetArgumentExpressions(SyntaxNodeAnalysis break; } - return argumentList.Select(node => node.Expression).ToList(); + return argumentList.Select(node => node.Expression); } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherAnalyzer.cs b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherAnalyzer.cs index 802f079d..3291faad 100644 --- a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherAnalyzer.cs +++ b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherAnalyzer.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Diagnostics; @@ -10,28 +11,33 @@ internal abstract class AbstractArgumentMatcherAnalyzer _compilationStartAction; + protected abstract TSyntaxKind InvocationExpressionKind { get; } protected AbstractArgumentMatcherAnalyzer(IDiagnosticDescriptorsProvider diagnosticDescriptorsProvider) : base(diagnosticDescriptorsProvider) { SupportedDiagnostics = ImmutableArray.Create(DiagnosticDescriptorsProvider.ArgumentMatcherUsedWithoutSpecifyingCall); + _compilationStartAction = AnalyzeCompilation; } public override ImmutableArray SupportedDiagnostics { get; } protected override void InitializeAnalyzer(AnalysisContext context) { - context.RegisterCompilationStartAction(compilationContext => - { - var compilationAnalyzer = CreateArgumentMatcherCompilationAnalyzer(); - - compilationContext.RegisterSyntaxNodeAction(compilationAnalyzer.BeginAnalyzeArgMatchers, InvocationExpressionKind); - - compilationContext.RegisterCompilationEndAction(compilationAnalyzer.FinishAnalyzeArgMatchers); - }); + context.RegisterCompilationStartAction(_compilationStartAction); } protected abstract AbstractArgumentMatcherCompilationAnalyzer CreateArgumentMatcherCompilationAnalyzer(); + + private void AnalyzeCompilation(CompilationStartAnalysisContext compilationContext) + { + var compilationAnalyzer = CreateArgumentMatcherCompilationAnalyzer(); + + compilationContext.RegisterSyntaxNodeAction(compilationAnalyzer.BeginAnalyzeArgMatchers, InvocationExpressionKind); + + compilationContext.RegisterCompilationEndAction(compilationAnalyzer.FinishAnalyzeArgMatchers); + } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherCompilationAnalyzer.cs b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherCompilationAnalyzer.cs index 2cf072b0..6e9b323c 100644 --- a/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherCompilationAnalyzer.cs +++ b/src/NSubstitute.Analyzers.Shared/DiagnosticAnalyzers/AbstractArgumentMatcherCompilationAnalyzer.cs @@ -81,7 +81,7 @@ public void FinishAnalyzeArgMatchers(CompilationAnalysisContext compilationAnaly protected abstract SyntaxNode GetOperationSyntax(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, TArgumentSyntax argumentExpression); - protected abstract List TryGetArgumentExpressions(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode); + protected abstract IEnumerable TryGetArgumentExpressions(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode); private bool IsFollowedBySetupInvocation(SyntaxNodeAnalysisContext syntaxNodeContext, SyntaxNode invocationExpressionSyntax) { @@ -119,7 +119,7 @@ private void BeginAnalyzeWhenLikeMethod(SyntaxNodeAnalysisContext syntaxNodeCont private void BeginAnalyzeReceivedInOrderMethod(SyntaxNodeAnalysisContext syntaxNodeContext, TInvocationExpressionSyntax invocationExpression) { foreach (var syntaxNode in _substitutionNodeFinder - .FindForReceivedInOrderExpression(syntaxNodeContext, invocationExpression).ToList()) + .FindForReceivedInOrderExpression(syntaxNodeContext, invocationExpression)) { var symbol = syntaxNodeContext.SemanticModel.GetSymbolInfo(syntaxNode).Symbol; var actualNode = syntaxNode is TMemberAccessExpressionSyntax && symbol is IMethodSymbol _ diff --git a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs index d6d45663..7b0cdfaf 100644 --- a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs +++ b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherAnalyzer.cs @@ -7,12 +7,10 @@ namespace NSubstitute.Analyzers.VisualBasic.DiagnosticAnalyzers { [DiagnosticAnalyzer(LanguageNames.VisualBasic)] - internal class ArgumentMatcherAnalyzer : AbstractArgumentMatcherAnalyzer + internal sealed class ArgumentMatcherAnalyzer : AbstractArgumentMatcherAnalyzer { - private readonly ISubstitutionNodeFinder _substitutionNodeFinder = new SubstitutionNodeFinder(); - public ArgumentMatcherAnalyzer() - : base(new DiagnosticDescriptorsProvider()) + : base(VisualBasic.DiagnosticDescriptorsProvider.Instance) { } @@ -20,7 +18,7 @@ public ArgumentMatcherAnalyzer() protected override AbstractArgumentMatcherCompilationAnalyzer CreateArgumentMatcherCompilationAnalyzer() { - return new ArgumentMatcherCompilationAnalyzer(_substitutionNodeFinder, DiagnosticDescriptorsProvider); + return new ArgumentMatcherCompilationAnalyzer(SubstitutionNodeFinder.Instance, DiagnosticDescriptorsProvider); } } } \ No newline at end of file diff --git a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs index 19eeb9ff..732739cc 100644 --- a/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs +++ b/src/NSubstitute.Analyzers.VisualBasic/DiagnosticAnalyzers/ArgumentMatcherCompilationAnalyzer.cs @@ -10,7 +10,7 @@ namespace NSubstitute.Analyzers.VisualBasic.DiagnosticAnalyzers { - internal class ArgumentMatcherCompilationAnalyzer : AbstractArgumentMatcherCompilationAnalyzer + internal sealed class ArgumentMatcherCompilationAnalyzer : AbstractArgumentMatcherCompilationAnalyzer { private static ImmutableArray> AncestorPaths { get; } = ImmutableArray.Create( ImmutableArray.Create( @@ -31,7 +31,8 @@ protected override SyntaxNode GetOperationSyntax(SyntaxNodeAnalysisContext synta return operation?.Parent?.Syntax; } - protected override List TryGetArgumentExpressions(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode) + protected override IEnumerable TryGetArgumentExpressions( + SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, SyntaxNode syntaxNode) { SeparatedSyntaxList argumentList = default; switch (syntaxNode) @@ -41,7 +42,7 @@ protected override List TryGetArgumentExpressions(SyntaxNodeAnalysis break; } - return argumentList.Select(node => node.GetExpression()).ToList(); + return argumentList.Select(node => node.GetExpression()); } } } \ No newline at end of file