From 03b87488ea919d51e5fca2545f8f73317e7a2cc9 Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 09:57:54 +0100
Subject: [PATCH 1/7] Housekeeping

---
 ...Rule0007DataPerCompanyShouldAlwaysBeSet.cs | 20 +++++++++----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs b/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
index 95492804..cbb94760 100644
--- a/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
+++ b/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
@@ -1,11 +1,6 @@
 using Microsoft.Dynamics.Nav.CodeAnalysis;
 using Microsoft.Dynamics.Nav.CodeAnalysis.Diagnostics;
-using Microsoft.Dynamics.Nav.CodeAnalysis.Syntax;
-using System;
 using System.Collections.Immutable;
-using System.Linq;
-using System.Text.RegularExpressions;
-using System.Threading;
 
 namespace BusinessCentral.LinterCop.Design
 {
@@ -19,7 +14,7 @@ public override void Initialize(AnalysisContext context)
 
         private void CheckforMissingDataPerCompanyOnTables(SymbolAnalysisContext context)
         {
-            if (context.Symbol.IsObsoletePending ||context.Symbol.IsObsoleteRemoved) return;
+            if (context.Symbol.IsObsoletePending || context.Symbol.IsObsoleteRemoved) return;
             ITableTypeSymbol table = (ITableTypeSymbol)context.Symbol;
             if (table.TableType == TableTypeKind.Temporary)
                 return;
@@ -33,11 +28,15 @@ private void CheckforMissingDataPerCompanyOnTables(SymbolAnalysisContext context
             }
         }
 
-        private static bool IsSymbolAccessible(ISymbol symbol) {
-            try {
+        private static bool IsSymbolAccessible(ISymbol symbol)
+        {
+            try
+            {
                 GetDeclaration(symbol);
                 return true;
-            } catch(Exception) {
+            }
+            catch (Exception)
+            {
                 return false;
             }
         }
@@ -45,5 +44,4 @@ private static bool IsSymbolAccessible(ISymbol symbol) {
         private static string GetDeclaration(ISymbol symbol)
             => symbol.Location.SourceTree.GetText(CancellationToken.None).GetSubText(symbol.DeclaringSyntaxReference.Span).ToString();
     }
-    
-}
+}
\ No newline at end of file

From f54602521f031f9a930301d887b1aaa9ae002097 Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 10:01:01 +0100
Subject: [PATCH 2/7] Fix typo

---
 LinterCopAnalyzers.Generated.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/LinterCopAnalyzers.Generated.cs b/LinterCopAnalyzers.Generated.cs
index e13991a5..f3176348 100644
--- a/LinterCopAnalyzers.Generated.cs
+++ b/LinterCopAnalyzers.Generated.cs
@@ -39,6 +39,6 @@ public static class DiagnosticDescriptors
         public static readonly DiagnosticDescriptor Rule0030AccessInternalForInstallAndUpgradeCodeunits = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0030", (LocalizableString)new LocalizableResourceString("Rule0030AccessInternalForInstallAndUpgradeCodeunitsTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0030AccessInternalForInstallAndUpgradeCodeunitsFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Info, true, (LocalizableString)new LocalizableResourceString("Rule0030AccessInternalForInstallAndUpgradeCodeunitsDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0030");
         public static readonly DiagnosticDescriptor Rule0031RecordInstanceIsolationLevel = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0031", (LocalizableString)new LocalizableResourceString("Rule0031RecordInstanceIsolationLevelTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0031RecordInstanceIsolationLevelFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Info, true, (LocalizableString)new LocalizableResourceString("Rule0031RecordInstanceIsolationLevelDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0031");
         public static readonly DiagnosticDescriptor Rule0032ClearCodeunitSingleInstance = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0032", (LocalizableString)new LocalizableResourceString("Rule0032ClearCodeunitSingleInstanceTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0032ClearCodeunitSingleInstanceFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0032ClearCodeunitSingleInstanceDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0032");
-        public static readonly DiagnosticDescriptor Rule0033AppManifestRuntimeBehind = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0033", (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Info, true, (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindTitleDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0033");
+        public static readonly DiagnosticDescriptor Rule0033AppManifestRuntimeBehind = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0033", (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Info, true, (LocalizableString)new LocalizableResourceString("Rule0033AppManifestRuntimeBehindTitleDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0033");
     }
 }
\ No newline at end of file

From 587a7b49128bab79df7fc8e1a9dff17830f7f1bc Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 10:55:23 +0100
Subject: [PATCH 3/7] Housekeeping (CamelCasing)

---
 Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs b/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
index cbb94760..ef6cfdbf 100644
--- a/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
+++ b/Design/Rule0007DataPerCompanyShouldAlwaysBeSet.cs
@@ -10,9 +10,9 @@ public class Rule0007DataPerCompanyShouldAlwaysBeSet : DiagnosticAnalyzer
         public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create<DiagnosticDescriptor>(DiagnosticDescriptors.Rule0007DataPerCompanyShouldAlwaysBeSet);
 
         public override void Initialize(AnalysisContext context)
-            => context.RegisterSymbolAction(new Action<SymbolAnalysisContext>(this.CheckforMissingDataPerCompanyOnTables), SymbolKind.Table);
+            => context.RegisterSymbolAction(new Action<SymbolAnalysisContext>(this.CheckForMissingDataPerCompanyOnTables), SymbolKind.Table);
 
-        private void CheckforMissingDataPerCompanyOnTables(SymbolAnalysisContext context)
+        private void CheckForMissingDataPerCompanyOnTables(SymbolAnalysisContext context)
         {
             if (context.Symbol.IsObsoletePending || context.Symbol.IsObsoleteRemoved) return;
             ITableTypeSymbol table = (ITableTypeSymbol)context.Symbol;

From 520a54f35f597956c33875afc96f2623e8631749 Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 12:03:35 +0100
Subject: [PATCH 4/7] Add LC0033 to Documentation

---
 LinterCop.ruleset.json | 5 +++++
 README.md              | 1 +
 2 files changed, 6 insertions(+)

diff --git a/LinterCop.ruleset.json b/LinterCop.ruleset.json
index f55b4340..a72d4747 100644
--- a/LinterCop.ruleset.json
+++ b/LinterCop.ruleset.json
@@ -161,6 +161,11 @@
       "id": "LC0032",
       "action": "Warning",
       "justification": "Clear(All) does not affect or change values for global variables in single instance codeunits."
+    },
+    {
+      "id": "LC0033",
+      "action": "Info",
+      "justification": "The specified `runtime` version in app.json is falling behind."
     }
   ]
 }
\ No newline at end of file
diff --git a/README.md b/README.md
index 5b7b41e5..f2fe96d7 100644
--- a/README.md
+++ b/README.md
@@ -74,6 +74,7 @@ Further note that you should have BcContainerHelper version 2.0.16 (or newer) in
 |[LC0030](https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0030)|Set Access property to Internal for Install/Upgrade codeunits.|Info|
 |[LC0031](https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0031)|Set ReadIsolation property instead of LockTable method.|Info|
 |[LC0032](https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0032)|Clear(All) does not affect or change values for global variables in single instance codeunits.|Warning|
+|[LC0033](https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0033)|The specified runtime version in app.json is falling behind.|Info|
 
 ## Configuration
 

From a93310868580d7ceda6574b5c3386eedaf925980 Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 12:05:48 +0100
Subject: [PATCH 5/7] Fix typo

---
 LinterCop.ruleset.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/LinterCop.ruleset.json b/LinterCop.ruleset.json
index a72d4747..8177407e 100644
--- a/LinterCop.ruleset.json
+++ b/LinterCop.ruleset.json
@@ -165,7 +165,7 @@
     {
       "id": "LC0033",
       "action": "Info",
-      "justification": "The specified `runtime` version in app.json is falling behind."
+      "justification": "The specified runtime version in app.json is falling behind."
     }
   ]
 }
\ No newline at end of file

From 4b595f5f4387e4f6d7a74920b6fe5803fa442486 Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 12:17:23 +0100
Subject: [PATCH 6/7] Resolve NullReferenceException

---
 Design/Rule0023AlwaysSpecifyFieldgroups.cs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Design/Rule0023AlwaysSpecifyFieldgroups.cs b/Design/Rule0023AlwaysSpecifyFieldgroups.cs
index a7c5f81f..ac76032c 100644
--- a/Design/Rule0023AlwaysSpecifyFieldgroups.cs
+++ b/Design/Rule0023AlwaysSpecifyFieldgroups.cs
@@ -46,13 +46,13 @@ private void CheckFieldgroups(SymbolAnalysisContext ctx)
         private static bool IsTableOfTypeSetupTable(ITableTypeSymbol table)
         {
             // Expect Primary Key to contains only one field
-            if (table.PrimaryKey.Fields.Length != 1) return (false);
+            if (table.PrimaryKey is null || table.PrimaryKey.Fields.Length != 1) return false;
 
             // The field should be of type Code
-            if (table.PrimaryKey.Fields[0].GetTypeSymbol().GetNavTypeKindSafe() != NavTypeKind.Code) return (false);
+            if (table.PrimaryKey.Fields[0].GetTypeSymbol().GetNavTypeKindSafe() != NavTypeKind.Code) return false;
 
             // The field should be exactly (case sensitive) called 'Primary Key'
-            if (table.PrimaryKey.Fields[0].Name != "Primary Key") return (false);
+            if (table.PrimaryKey.Fields[0].Name != "Primary Key") return false;
 
             return (true);
         }

From 424164da2d04c158f427f5c8fae78931d43e21ef Mon Sep 17 00:00:00 2001
From: Arthur van de Vondervoort <arthur.vandevondervoort@vanroey.be>
Date: Tue, 21 Nov 2023 13:42:38 +0100
Subject: [PATCH 7/7] Housekeeping (fix typo)

---
 ...le0003DoNotUseObjectIDsInVariablesOrProperties.cs | 10 +++++-----
 ...05VariableCasingShouldNotDIfferFromDeclaration.cs | 12 ++++++------
 LinterCopAnalyzers.Generated.cs                      |  2 +-
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/Design/Rule0003DoNotUseObjectIDsInVariablesOrProperties.cs b/Design/Rule0003DoNotUseObjectIDsInVariablesOrProperties.cs
index b50e62b6..2a44c922 100644
--- a/Design/Rule0003DoNotUseObjectIDsInVariablesOrProperties.cs
+++ b/Design/Rule0003DoNotUseObjectIDsInVariablesOrProperties.cs
@@ -9,7 +9,7 @@ namespace BusinessCentral.LinterCop.Design
     [DiagnosticAnalyzer]
     public class Rule0003DoNotUseObjectIDsInVariablesOrProperties : DiagnosticAnalyzer
     {
-        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create<DiagnosticDescriptor>(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration);
+        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create<DiagnosticDescriptor>(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration);
 
         public override void Initialize(AnalysisContext context)
         {
@@ -40,7 +40,7 @@ private void CheckForObjectIDsInVariablesOrProperties(SyntaxNodeAnalysisContext
                     ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, ctx.Node.GetLocation(), new object[] { ctx.Node.ToString().Trim('"'), correctName }));
 
                 if (ctx.Node.GetLastToken().ToString().Trim('"') != correctName)
-                    ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
+                    ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
             }
             if (ctx.ContainingSymbol.Kind == SymbolKind.Property)
             {
@@ -72,7 +72,7 @@ private void CheckForObjectIDsInVariablesOrProperties(SyntaxNodeAnalysisContext
                         ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, ctx.Node.GetLocation(), new object[] { ctx.Node.ToString().Trim('"'), property.ValueText }));
 
                     if (ctx.Node.GetLastToken().ToString().Trim('"') != property.ValueText)
-                        ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Node.GetLocation(), new object[] { property.ValueText, "" }));
+                        ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Node.GetLocation(), new object[] { property.ValueText, "" }));
                 }
             }
 
@@ -98,7 +98,7 @@ private void CheckForObjectIDsInVariablesOrProperties(SyntaxNodeAnalysisContext
                             ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, ctx.Node.GetLocation(), new object[] { ctx.Node.ToString().Trim('"'), correctName }));
 
                         if (ctx.Node.ToString().Trim('"') != correctName)
-                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
+                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
                     }
                 }
                 try
@@ -117,7 +117,7 @@ private void CheckForObjectIDsInVariablesOrProperties(SyntaxNodeAnalysisContext
                             ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0003DoNotUseObjectIDsInVariablesOrProperties, ctx.Node.GetLocation(), new object[] { ctx.Node.ToString().Trim('"'), correctName }));
 
                         if (ctx.Node.ToString().Trim('"') != correctName)
-                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
+                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Node.GetLocation(), new object[] { correctName, "" }));
                     }
                 }
                 catch (System.NullReferenceException)
diff --git a/Design/Rule0005VariableCasingShouldNotDIfferFromDeclaration.cs b/Design/Rule0005VariableCasingShouldNotDIfferFromDeclaration.cs
index b30b3c7d..34bb61f4 100644
--- a/Design/Rule0005VariableCasingShouldNotDIfferFromDeclaration.cs
+++ b/Design/Rule0005VariableCasingShouldNotDIfferFromDeclaration.cs
@@ -9,7 +9,7 @@ namespace BusinessCentral.LinterCop.Design
     [DiagnosticAnalyzer]
     public class Rule0005VariableCasingShouldNotDIfferFromDeclaration : DiagnosticAnalyzer
     {
-        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create<DiagnosticDescriptor>(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration);
+        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create<DiagnosticDescriptor>(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration);
 
         public override void Initialize(AnalysisContext context)
         {
@@ -56,21 +56,21 @@ private void CheckForBuiltInTypeCasingMismatch(SymbolAnalysisContext ctx)
 
                 if (node.IsToken)
                     if (SyntaxFactory.Token(node.Kind).ToString() != node.ToString())
-                        ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, node.GetLocation(), new object[] { SyntaxFactory.Token(node.Kind), "" }));
+                        ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.GetLocation(), new object[] { SyntaxFactory.Token(node.Kind), "" }));
                 if (node.IsNode && !node.AsNode().ToString().StartsWith("array"))
                 {
                     if ((node.AsNode().IsKind(SyntaxKind.SimpleTypeReference) || node.Kind.ToString().Contains("DataType")) && !node.Kind.ToString().StartsWith("Codeunit") && !node.Kind.ToString().StartsWith("Enum") && !node.Kind.ToString().StartsWith("Label"))
                     {
                         var targetName = Enum.GetValues(typeof(NavTypeKind)).Cast<NavTypeKind>().FirstOrDefault(Kind => Kind.ToString().ToUpper() == node.AsNode().ToString().ToUpper() && Kind.ToString() != node.AsNode().ToString());
                         if (targetName != NavTypeKind.None)
-                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, node.GetLocation(), new object[] { targetName, "" }));
+                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.GetLocation(), new object[] { targetName, "" }));
                     }
                     if (node.AsNode().IsKind(SyntaxKind.SubtypedDataType) || node.AsNode().IsKind(SyntaxKind.GenericDataType) || node.AsNode().IsKind(SyntaxKind.OptionAccessExpression) ||
                        (node.AsNode().IsKind(SyntaxKind.SimpleTypeReference) && (node.Kind.ToString().StartsWith("Codeunit") || !node.Kind.ToString().StartsWith("Enum") || !node.Kind.ToString().StartsWith("Label"))))
                     {
                         var targetName = Enum.GetValues(typeof(NavTypeKind)).Cast<NavTypeKind>().FirstOrDefault(Kind => node.AsNode().ToString().ToUpper().StartsWith(Kind.ToString().ToUpper()) && !node.AsNode().ToString().StartsWith(Kind.ToString()));
                         if (targetName != NavTypeKind.None)
-                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, node.GetLocation(), new object[] { targetName, "" }));
+                            ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, node.GetLocation(), new object[] { targetName, "" }));
                     }
                 }
             }
@@ -152,13 +152,13 @@ private void CheckForBuiltInMethodsWithCasingMismatch(OperationAnalysisContext c
 
             if (OnlyDiffersInCasing(ctx.Operation.Syntax.ToString(), targetName))
             {
-                ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Operation.Syntax.GetLocation(), new object[] { targetName, "" }));
+                ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Operation.Syntax.GetLocation(), new object[] { targetName, "" }));
                 return;
             }
 
             var nodes = Array.Find(ctx.Operation.Syntax.DescendantNodes((SyntaxNode e) => true).ToArray(), element => OnlyDiffersInCasing(element.ToString(), targetName));
             if (nodes != null)
-                ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDIfferFromDeclaration, ctx.Operation.Syntax.GetLocation(), new object[] { targetName, "" }));
+                ctx.ReportDiagnostic(Diagnostic.Create(DiagnosticDescriptors.Rule0005VariableCasingShouldNotDifferFromDeclaration, ctx.Operation.Syntax.GetLocation(), new object[] { targetName, "" }));
         }
         private bool OnlyDiffersInCasing(string left, string right)
         {
diff --git a/LinterCopAnalyzers.Generated.cs b/LinterCopAnalyzers.Generated.cs
index f3176348..47b5ce65 100644
--- a/LinterCopAnalyzers.Generated.cs
+++ b/LinterCopAnalyzers.Generated.cs
@@ -11,7 +11,7 @@ public static class DiagnosticDescriptors
         public static readonly DiagnosticDescriptor Rule0002CommitMustBeExplainedByComment = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0002", (LocalizableString)new LocalizableResourceString("Rule0002CommitMustBeExplainedByComment", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0002CommitMustBeExplainedByCommentFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0002CommitMustBeExplainedByCommentDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0002");
         public static readonly DiagnosticDescriptor Rule0003DoNotUseObjectIDsInVariablesOrProperties = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0003", (LocalizableString)new LocalizableResourceString("Rule0003DoNotUseObjectIDsInVariablesOrProperties", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0003DoNotUseObjectIDsInVariablesOrPropertiesFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0003DoNotUseObjectIDsInVariablesOrPropertiesDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0003");
         public static readonly DiagnosticDescriptor Rule0004LookupPageIdAndDrillDownPageId = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0004", (LocalizableString)new LocalizableResourceString("Rule0004LookupPageIdAndDrillDownPageIdTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0004LookupPageIdAndDrillDownPageIdFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0004LookupPageIdAndDrillDownPageIdDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0004");
-        public static readonly DiagnosticDescriptor Rule0005VariableCasingShouldNotDIfferFromDeclaration = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0005", (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0005");
+        public static readonly DiagnosticDescriptor Rule0005VariableCasingShouldNotDifferFromDeclaration = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0005", (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0005VariableCasingShouldNotDIfferFromDeclarationDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0005");
         public static readonly DiagnosticDescriptor Rule0006FieldNotAutoIncrementInTemporaryTable = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0006", (LocalizableString)new LocalizableResourceString("Rule0006FieldNotAutoIncrementInTemporaryTableTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0006FieldNotAutoIncrementInTemporaryTableFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Error, true, (LocalizableString)new LocalizableResourceString("Rule0006FieldNotAutoIncrementInTemporaryTableDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0006");
         public static readonly DiagnosticDescriptor Rule0007DataPerCompanyShouldAlwaysBeSet = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0007", (LocalizableString)new LocalizableResourceString("Rule0007DataPerCompanyShouldAlwaysBeSetTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0007DataPerCompanyShouldAlwaysBeSetFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Hidden, false, (LocalizableString)new LocalizableResourceString("Rule0007DataPerCompanyShouldAlwaysBeSetDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0007");
         public static readonly DiagnosticDescriptor Rule0008NoFilterOperatorsInSetRange = new DiagnosticDescriptor(LinterCopAnalyzers.AnalyzerPrefix + "0008", (LocalizableString)new LocalizableResourceString("Rule0008NoFilterOperatorsInSetRangeTitle", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), (LocalizableString)new LocalizableResourceString("Rule0008NoFilterOperatorsInSetRangeFormat", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "Design", DiagnosticSeverity.Warning, true, (LocalizableString)new LocalizableResourceString("Rule0008NoFilterOperatorsInSetRangeDescription", LinterCopAnalyzers.ResourceManager, typeof(LinterCopAnalyzers)), "https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0008");