Skip to content

Commit

Permalink
Fix styling issues
Browse files Browse the repository at this point in the history
  • Loading branch information
martin-strecker-sonarsource authored and costin-zaharia-sonarsource committed May 14, 2024
1 parent e508411 commit d1e28bb
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,17 @@ public class ArgumentDescriptor
MethodInvocation(invokedType, methodName, parameterName, x => x == argumentPosition);

public static ArgumentDescriptor MethodInvocation(KnownType invokedType, string methodName, string parameterName, Func<int, bool> argumentPosition) =>
MethodInvocation(invokedType, methodName, p => p.Name == parameterName, argumentPosition, null);
MethodInvocation(invokedType, methodName, x => x.Name == parameterName, argumentPosition, null);

public static ArgumentDescriptor MethodInvocation(KnownType invokedType, string methodName, string parameterName, Func<int, bool> argumentPosition, RefKind refKind) =>
MethodInvocation(invokedType, methodName, p => p.Name == parameterName, argumentPosition, refKind);
MethodInvocation(invokedType, methodName, x => x.Name == parameterName, argumentPosition, refKind);

public static ArgumentDescriptor MethodInvocation(KnownType invokedType,
Func<string, StringComparison, bool> invokedMemberNameConstraint,
Func<IParameterSymbol, bool> parameterConstraint,
Func<int, bool> argumentPosition,
RefKind? refKind) =>
MethodInvocation(s => invokedType.Matches(s.ContainingType), invokedMemberNameConstraint, parameterConstraint, argumentPosition, refKind);
MethodInvocation(x => invokedType.Matches(x.ContainingType), invokedMemberNameConstraint, parameterConstraint, argumentPosition, refKind);

public static ArgumentDescriptor MethodInvocation(Func<IMethodSymbol, bool> invokedMemberConstraint,
Func<string, StringComparison, bool> invokedMemberNameConstraint,
Expand Down Expand Up @@ -153,7 +153,7 @@ public class ArgumentDescriptor
x => x is { MethodKind: MethodKind.Constructor, ContainingType.Name: { } name } && AttributeClassNameConstraint(attributeName, name, StringComparison.Ordinal),
(x, c) => AttributeClassNameConstraint(attributeName, x, c),
(_, _, _) => true,
p => p.Name == parameterName,
x => x.Name == parameterName,
(_, i) => i is null || i.Value == argumentPosition);

public static ArgumentDescriptor AttributeArgument(Func<IMethodSymbol, bool> attributeConstructorConstraint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ namespace SonarAnalyzer.Helpers;

public interface IMethodParameterLookup
{
IMethodSymbol MethodSymbol { get; }
bool TryGetSymbol(SyntaxNode argument, out IParameterSymbol parameter);
bool TryGetSyntax(IParameterSymbol parameter, out ImmutableArray<SyntaxNode> expressions);
bool TryGetSyntax(string parameterName, out ImmutableArray<SyntaxNode> expressions);
bool TryGetNonParamsSyntax(IParameterSymbol parameter, out SyntaxNode expression);
IMethodSymbol MethodSymbol { get; }
}

// This should come from the Roslyn API (https://github.com/dotnet/roslyn/issues/9)
Expand Down Expand Up @@ -64,16 +64,16 @@ private bool TryGetSymbol(SyntaxNode argument, IMethodSymbol methodSymbol, out I
var arg = argument as TArgumentSyntax ?? throw new ArgumentException($"{nameof(argument)} must be of type {typeof(TArgumentSyntax)}", nameof(argument));

if (!argumentList.Contains(arg)
|| methodSymbol == null
|| methodSymbol is null
|| methodSymbol.IsVararg)
{
return false;
}

if (GetNameColonIdentifier(arg) is { } nameColonIdentifier)
{
parameter = methodSymbol.Parameters.FirstOrDefault(symbol => symbol.Name == nameColonIdentifier.ValueText);
return parameter != null;
parameter = methodSymbol.Parameters.FirstOrDefault(x => x.Name == nameColonIdentifier.ValueText);
return parameter is not null;
}

if (GetNameEqualsIdentifier(arg) is { } nameEqualsIdentifier
Expand All @@ -83,15 +83,15 @@ private bool TryGetSymbol(SyntaxNode argument, IMethodSymbol methodSymbol, out I
&& setter.Parameters is { Length: 1 } parameters)
{
parameter = parameters[0];
return parameter != null;
return parameter is not null;
}

var index = argumentList.IndexOf(arg);
if (index >= methodSymbol.Parameters.Length)
{
var lastParameter = methodSymbol.Parameters.Last();
parameter = lastParameter.IsParams ? lastParameter : null;
return parameter != null;
return parameter is not null;
}
parameter = methodSymbol.Parameters[index];
return true;
Expand Down
18 changes: 9 additions & 9 deletions analyzers/src/SonarAnalyzer.Common/Trackers/ArgumentTracker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@ public abstract class ArgumentTracker<TSyntaxKind> : SyntaxTrackerBase<TSyntaxKi
new(context);

public Condition MatchArgument(ArgumentDescriptor descriptor) =>
context =>
trackingContext =>
{
if (context.Node is { } argumentNode
if (trackingContext.Node is { } argumentNode
&& argumentNode is { Parent.Parent: { } invoked }
&& SyntacticChecks(context.SemanticModel, descriptor, argumentNode, invoked)
&& (descriptor.InvokedMemberNodeConstraint?.Invoke(context.SemanticModel, Language, invoked) ?? true)
&& MethodSymbol(context.SemanticModel, invoked) is { } methodSymbol
&& SyntacticChecks(trackingContext.SemanticModel, descriptor, argumentNode, invoked)
&& (descriptor.InvokedMemberNodeConstraint?.Invoke(trackingContext.SemanticModel, Language, invoked) ?? true)
&& MethodSymbol(trackingContext.SemanticModel, invoked) is { } methodSymbol
&& Language.MethodParameterLookup(invoked, methodSymbol).TryGetSymbol(argumentNode, out var parameter)
&& ParameterMatches(parameter, descriptor.ParameterConstraint, descriptor.InvokedMemberConstraint))
{
context.Parameter = parameter;
trackingContext.Parameter = parameter;
return true;
}
return false;
Expand All @@ -63,9 +63,9 @@ public abstract class ArgumentTracker<TSyntaxKind> : SyntaxTrackerBase<TSyntaxKi
private bool SyntacticChecks(SemanticModel model, ArgumentDescriptor descriptor, SyntaxNode argumentNode, SyntaxNode invokedExpression) =>
InvocationMatchesMemberKind(invokedExpression, descriptor.MemberKind)
&& RefKindMatches(descriptor, argumentNode)
&& (descriptor.ArgumentListConstraint == null
&& (descriptor.ArgumentListConstraint is null
|| (ArgumentList(argumentNode) is { } argList && descriptor.ArgumentListConstraint(argList, Position(argumentNode))))
&& (descriptor.InvokedMemberNameConstraint == null
&& (descriptor.InvokedMemberNameConstraint is null
|| InvokedMemberMatches(model, invokedExpression, descriptor.MemberKind, x => descriptor.InvokedMemberNameConstraint(x, Language.NameComparison)));

private bool RefKindMatches(ArgumentDescriptor descriptor, SyntaxNode argumentNode) =>
Expand All @@ -89,7 +89,7 @@ private static bool ParameterMatches(IParameterSymbol parameter, Func<IParameter
return true;
}
}
while ((method = method.OverriddenMethod) != null);
while ((method = method.OverriddenMethod) is not null);
}
return false;
}
Expand Down
15 changes: 7 additions & 8 deletions analyzers/src/SonarAnalyzer.Common/Trackers/TrackerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

namespace SonarAnalyzer.Helpers
namespace SonarAnalyzer.Helpers;

public abstract class TrackerBase<TSyntaxKind, TContext>
where TSyntaxKind : struct
where TContext : BaseContext
{
public abstract class TrackerBase<TSyntaxKind, TContext>
where TSyntaxKind : struct
where TContext : BaseContext
{
public delegate bool Condition(TContext trackingContext);
protected abstract ILanguageFacade<TSyntaxKind> Language { get; }

protected abstract ILanguageFacade<TSyntaxKind> Language { get; }
}
public delegate bool Condition(TContext trackingContext);
}
Loading

0 comments on commit d1e28bb

Please sign in to comment.