private static bool ShouldNameArguments(SyntaxNodeAnalysisContext context, ArgumentListSyntax argumentListSyntax) { if (argumentListSyntax.Arguments.Count < 4) { return(false); } if (argumentListSyntax.IsInExpressionTree(context.SemanticModel, context.CancellationToken)) { return(false); } if (context.SemanticModel.GetSymbolSafe(argumentListSyntax.Parent, context.CancellationToken) is IMethodSymbol method) { if (method.ContainingType == KnownSymbol.String || method.ContainingType.IsAssignableTo(KnownSymbol.Tuple, context.Compilation) || method.ContainingType == KnownSymbol.DependencyProperty) { return(false); } if (method.Parameters.TryFirst(x => x.IsParams, out _)) { return(false); } foreach (var member in method.ContainingType.GetMembers(method.Name)) { if (member is IMethodSymbol overload && overload.Parameters.TryFirst(x => x.IsParams, out _)) { return(false); } } if (!HasAdjacentParametersOfSameType(method.Parameters)) { return(false); } var lineNumber = argumentListSyntax.OpenParenToken.FileLinePositionSpan(context.CancellationToken).StartLinePosition.Line; foreach (var argument in argumentListSyntax.Arguments) { var ln = argument.FileLinePositionSpan(context.CancellationToken).StartLinePosition.Line; if (ln == lineNumber) { return(false); } lineNumber = ln; if (argument.NameColon == null) { return(true); } } } return(false); }