private bool IsExceptionToTheRule(LiteralExpressionSyntax literalExpression) => NotConsideredAsMagicNumbers.Contains(literalExpression.Token.ValueText) || // It's ok to use magic numbers as part of a variable declaration literalExpression.FirstAncestorOrSelf <VariableDeclarationSyntax>() != null || // It's ok to use magic numbers as part of a parameter declaration literalExpression.FirstAncestorOrSelf <ParameterSyntax>() != null || // It's ok to use magic numbers in the GetHashCode method. Note that I am only checking the method name of the sake of simplicity literalExpression.FirstAncestorOrSelf <MethodDeclarationSyntax>()?.Identifier.ValueText == nameof(object.GetHashCode) || // It's ok to use magic numbers in pragma directives literalExpression.FirstAncestorOrSelf <PragmaWarningDirectiveTriviaSyntax>() != null;
// Inside property we consider magic numbers as exceptions in the following cases: // - A {get; set;} = MAGIC_NUMBER // - A { get { return MAGIC_NUMBER; } } private static bool IsInsideProperty(LiteralExpressionSyntax literalExpression) { if (literalExpression.FirstAncestorOrSelf <PropertyDeclarationSyntax>() == null) { return(false); } var parent = literalExpression.Parent; return(parent is ReturnStatementSyntax || parent is EqualsValueClauseSyntax); }
private bool IsMatchingMethodParameterName(LiteralExpressionSyntax literalExpression) => literalExpression.FirstAncestorOrSelf <BaseMethodDeclarationSyntax>() ?.ParameterList ?.Parameters .Any(p => p.Identifier.ValueText == literalExpression.Token.ValueText) ?? false;
protected string GetAssignedVariableName(LiteralExpressionSyntax stringLiteral) => stringLiteral.FirstAncestorOrSelf <SyntaxNode>(IsVariableIdentifier)?.ToString();
private static string GetAssignedVariableName(LiteralExpressionSyntax stringLiteral) => stringLiteral.FirstAncestorOrSelf <SyntaxNode>(IsVariableIdentifier)?.ToString().ToUpperInvariant();