Skip to content

Commit

Permalink
Implement QuoteIdentifierIfNeeded
Browse files Browse the repository at this point in the history
Arthurvdv committed May 26, 2024
1 parent eb5d697 commit a4963c8
Showing 4 changed files with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -208,7 +208,7 @@ private void AnalyzeIdentifierName(SyntaxNodeAnalysisContext ctx)
string identifierName = StringExtensions.UnquoteIdentifier(node.Identifier.ValueText);

if (!identifierName.AsSpan().Equals(fieldSymbol.Name.AsSpan(), StringComparison.Ordinal))
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.GetLocation(), new object[] { StringExtensions.QuoteIdentifierIfNeeded(fieldSymbol.Name), "" }));
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.GetLocation(), new object[] { fieldSymbol.Name.QuoteIdentifierIfNeeded(), "" }));
}

private void AnalyzeQualifiedName(SyntaxNodeAnalysisContext ctx)
@@ -223,7 +223,7 @@ private void AnalyzeQualifiedName(SyntaxNodeAnalysisContext ctx)
string identifierName = StringExtensions.UnquoteIdentifier(node.Right.Identifier.ValueText);

if (!identifierName.AsSpan().Equals(fieldSymbol.Name.AsSpan(), StringComparison.Ordinal))
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.Right.GetLocation(), new object[] { StringExtensions.QuoteIdentifierIfNeeded(fieldSymbol.Name), "" }));
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.Right.GetLocation(), new object[] { fieldSymbol.Name.QuoteIdentifierIfNeeded(), "" }));
}

private void AnalyzeQualifiedNameWithoutNamespace(SyntaxNodeAnalysisContext ctx)
@@ -255,7 +255,7 @@ private void AnalyzeQualifiedNameWithoutNamespace(SyntaxNodeAnalysisContext ctx)
string identifierName = StringExtensions.UnquoteIdentifier(identifier.ValueText);

if (!identifierName.AsSpan().Equals(objectTypeSymbol.Name.AsSpan(), StringComparison.Ordinal))
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, identifierNameSyntax.GetLocation(), new object[] { StringExtensions.QuoteIdentifierIfNeeded(objectTypeSymbol.Name), "" }));
ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, identifierNameSyntax.GetLocation(), new object[] { objectTypeSymbol.Name.QuoteIdentifierIfNeeded(), "" }));
}

private void CheckForBuiltInTypeCasingMismatch(SymbolAnalysisContext ctx)
3 changes: 2 additions & 1 deletion Design/Rule0013CheckForNotBlankOnSingleFieldPrimaryKeys.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using BusinessCentral.LinterCop.AnalysisContextExtension;
using Microsoft.Dynamics.Nav.CodeAnalysis;
using Microsoft.Dynamics.Nav.CodeAnalysis.Diagnostics;
using Microsoft.Dynamics.Nav.CodeAnalysis.Utilities;
using System.Collections.Immutable;

namespace BusinessCentral.LinterCop.Design
@@ -46,7 +47,7 @@ private static bool TableContainsNoSeries(ITableTypeSymbol table)
{
var property = field.GetProperty(PropertyKind.TableRelation);
if (property != null)
return field.GetProperty(PropertyKind.TableRelation).ValueText.StartsWith("\"No. Series\"");
return field.GetProperty(PropertyKind.TableRelation).ValueText.UnquoteIdentifier().StartsWith("No. Series");
return false;
});
}
4 changes: 2 additions & 2 deletions Design/Rule0044AnalyzeTransferField.cs
Original file line number Diff line number Diff line change
@@ -184,7 +184,7 @@ private void ReportFieldDiagnostics(SyntaxNodeAnalysisContext ctx, Table table,
{
TableSyntax tableSyntax = (TableSyntax)node;

return tableSyntax.Name.Identifier.ToString().Replace("\"", "");
return GetIdentifierName(tableSyntax.Name);
}

if (nodeType == typeof(TableExtensionSyntax))
@@ -242,7 +242,7 @@ private void ReportFieldDiagnostics(SyntaxNodeAnalysisContext ctx, Table table,

IdentifierNameSyntax identifierNameSyntax = (IdentifierNameSyntax)identifier;

return identifierNameSyntax.ToString().Replace("\"", "");
return identifierNameSyntax.Identifier.ValueText.UnquoteIdentifier();
}

private Tuple<string, string>? GetInvokingRecordNames(InvocationExpressionSyntax invocationExpression)
4 changes: 2 additions & 2 deletions Design/Rule0052and0053InternalProceduresNotReferenced.cs
Original file line number Diff line number Diff line change
@@ -200,7 +200,7 @@ public void ReportUnchangedReferencePassedParameters(Action<Diagnostic> action)
IMethodSymbol methodSymbol = unusedInternalMethod.Key;
IApplicationObjectTypeSymbol objectSymbol = methodSymbol.GetContainingApplicationObjectTypeSymbol();

Diagnostic diagnostic = Diagnostic.Create(DiagnosticDescriptors.Rule0052InternalProceduresNotReferencedAnalyzerDescriptor, methodSymbol.OriginalDefinition.GetLocation(), methodSymbol.DeclaredAccessibility.ToString().ToLowerInvariant(), StringExtensions.QuoteIdentifierIfNeeded(methodSymbol.Name), objectSymbol.NavTypeKind, StringExtensions.QuoteIdentifierIfNeeded(objectSymbol.Name), objectSymbol.DeclaredAccessibility);
Diagnostic diagnostic = Diagnostic.Create(DiagnosticDescriptors.Rule0052InternalProceduresNotReferencedAnalyzerDescriptor, methodSymbol.OriginalDefinition.GetLocation(), methodSymbol.DeclaredAccessibility.ToString().ToLowerInvariant(), methodSymbol.Name.QuoteIdentifierIfNeeded(), objectSymbol.NavTypeKind, objectSymbol.Name.QuoteIdentifierIfNeeded(), objectSymbol.DeclaredAccessibility);
action(diagnostic);
}
}
@@ -214,7 +214,7 @@ public void ReportInternalMethodOnlyReferencedInCurrentObject(Action<Diagnostic>
IMethodSymbol methodSymbol = internalMethodPair.Key;
IApplicationObjectTypeSymbol objectSymbol = methodSymbol.GetContainingApplicationObjectTypeSymbol();

Diagnostic diagnostic = Diagnostic.Create(DiagnosticDescriptors.Rule0053InternalProcedureOnlyUsedInCurrentObjectAnalyzerDescriptor, methodSymbol.OriginalDefinition.GetLocation(), methodSymbol.DeclaredAccessibility.ToString().ToLowerInvariant(), StringExtensions.QuoteIdentifierIfNeeded(methodSymbol.Name), objectSymbol.NavTypeKind, StringExtensions.QuoteIdentifierIfNeeded(objectSymbol.Name), objectSymbol.DeclaredAccessibility);
Diagnostic diagnostic = Diagnostic.Create(DiagnosticDescriptors.Rule0053InternalProcedureOnlyUsedInCurrentObjectAnalyzerDescriptor, methodSymbol.OriginalDefinition.GetLocation(), methodSymbol.DeclaredAccessibility.ToString().ToLowerInvariant(), methodSymbol.Name.QuoteIdentifierIfNeeded(), objectSymbol.NavTypeKind, objectSymbol.Name.QuoteIdentifierIfNeeded(), objectSymbol.DeclaredAccessibility);
action(diagnostic);
}
}

0 comments on commit a4963c8

Please sign in to comment.