From 70ffe7c93d7c4c5aaca72099dc33b59261e2e5b3 Mon Sep 17 00:00:00 2001 From: elachlan <2433737+elachlan@users.noreply.github.com> Date: Thu, 30 Dec 2021 12:58:58 +1000 Subject: [PATCH 1/3] CA1829 Use Length/Count property instead of Count() when available --- eng/CodeAnalysis.ruleset | 2 +- .../Definition/Project_Tests.cs | 4 ++-- .../BackEnd/IntrinsicTask_Tests.cs | 4 ++-- .../BackEnd/SdkResolverService_Tests.cs | 2 +- .../BackEnd/TaskBuilderTestTask.cs | 4 ++-- .../Evaluation/Evaluator_Tests.cs | 16 ++++++++-------- src/MSBuild/OutOfProcTaskAppDomainWrapperBase.cs | 2 +- src/Tasks.UnitTests/ResourceManagement_Tests.cs | 6 +++--- .../RoslynCodeTaskFactory_Tests.cs | 2 +- .../ToolLocationHelper_Tests.cs | 2 +- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/eng/CodeAnalysis.ruleset b/eng/CodeAnalysis.ruleset index 2078c42fe6c..772ddf68862 100644 --- a/eng/CodeAnalysis.ruleset +++ b/eng/CodeAnalysis.ruleset @@ -99,7 +99,7 @@ - + diff --git a/src/Build.OM.UnitTests/Definition/Project_Tests.cs b/src/Build.OM.UnitTests/Definition/Project_Tests.cs index afaf6ecf8ab..79cde2c7461 100644 --- a/src/Build.OM.UnitTests/Definition/Project_Tests.cs +++ b/src/Build.OM.UnitTests/Definition/Project_Tests.cs @@ -2284,7 +2284,7 @@ public void RemoveSeveralItemsOfVariousTypes() project.RemoveItems(list); - project.Items.Count().ShouldBe(2); + project.Items.Count.ShouldBe(2); } /// @@ -2304,7 +2304,7 @@ public void RemoveSeveralItemsExpandExpression() Project project = new Project(XmlReader.Create(new StringReader(projectOriginalContents))); project.RemoveItems(project.GetItems("j").Take(2)); - project.Items.Count().ShouldBe(3); + project.Items.Count.ShouldBe(3); StringWriter writer = new EncodingStringWriter(); project.Save(writer); diff --git a/src/Build.UnitTests/BackEnd/IntrinsicTask_Tests.cs b/src/Build.UnitTests/BackEnd/IntrinsicTask_Tests.cs index a52b53f97f5..617f4b8ba1e 100644 --- a/src/Build.UnitTests/BackEnd/IntrinsicTask_Tests.cs +++ b/src/Build.UnitTests/BackEnd/IntrinsicTask_Tests.cs @@ -2012,7 +2012,7 @@ public void RemoveWithMatchingMultipleMetadata() Lookup lookup = LookupHelpers.CreateEmptyLookup(); ExecuteTask(task, lookup); ICollection items = lookup.GetItems("I2"); - items.Count().ShouldBe(3); + items.Count.ShouldBe(3); items.ElementAt(0).EvaluatedInclude.ShouldBe("a2"); items.ElementAt(1).EvaluatedInclude.ShouldBe("c2"); items.ElementAt(2).EvaluatedInclude.ShouldBe("d2"); @@ -3478,7 +3478,7 @@ public void PhoenixBatchingIssue() ProjectInstance instance = new ProjectInstance(xml); instance.Build(); - Assert.Equal(2, instance.Items.Count()); + Assert.Equal(2, instance.Items.Count); Assert.Equal("gen.obj", instance.GetItems("CppCompile").First().GetMetadataValue("ObjectFile")); Assert.Equal("def.obj", instance.GetItems("CppCompile").Last().GetMetadataValue("ObjectFile")); } diff --git a/src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs b/src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs index cbfd97c5f83..94712546e48 100644 --- a/src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs +++ b/src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs @@ -244,7 +244,7 @@ private void ValidateExpectedPropertiesAndItems(bool includePropertiesAndItems, result.PropertiesToAdd.Count.ShouldBe(1); result.PropertiesToAdd["PropertyFromSdkResolver"].ShouldBe("ValueFromSdkResolver"); - result.ItemsToAdd.Count().ShouldBe(1); + result.ItemsToAdd.Count.ShouldBe(1); result.ItemsToAdd.Keys.Single().ShouldBe("ItemNameFromSdkResolver"); result.ItemsToAdd.Values.Single().ItemSpec.ShouldBe("ItemValueFromSdkResolver"); var metadata = result.ItemsToAdd.Values.Single().Metadata; diff --git a/src/Build.UnitTests/BackEnd/TaskBuilderTestTask.cs b/src/Build.UnitTests/BackEnd/TaskBuilderTestTask.cs index c0341747d64..88cbdf26d0c 100644 --- a/src/Build.UnitTests/BackEnd/TaskBuilderTestTask.cs +++ b/src/Build.UnitTests/BackEnd/TaskBuilderTestTask.cs @@ -550,8 +550,8 @@ public TaskPropertyInfo[] GetTaskParameters() propertyInfos[i] = new TaskPropertyInfo( infos[i].Name, infos[i].PropertyType, - infos[i].GetCustomAttributes(typeof(OutputAttribute), false).Count() > 0, - infos[i].GetCustomAttributes(typeof(RequiredAttribute), false).Count() > 0); + infos[i].GetCustomAttributes(typeof(OutputAttribute), false).Length > 0, + infos[i].GetCustomAttributes(typeof(RequiredAttribute), false).Length > 0); } return propertyInfos; diff --git a/src/Build.UnitTests/Evaluation/Evaluator_Tests.cs b/src/Build.UnitTests/Evaluation/Evaluator_Tests.cs index 7a4f17f2686..1a3b74033e3 100644 --- a/src/Build.UnitTests/Evaluation/Evaluator_Tests.cs +++ b/src/Build.UnitTests/Evaluation/Evaluator_Tests.cs @@ -1886,7 +1886,7 @@ public void AllEvaluatedItems() Project project = new Project(XmlReader.Create(new StringReader(content))); - Assert.Equal(6, project.AllEvaluatedItems.Count()); + Assert.Equal(6, project.AllEvaluatedItems.Count); Assert.Equal("i1", project.AllEvaluatedItems.ElementAt(0).EvaluatedInclude); Assert.Equal(String.Empty, project.AllEvaluatedItems.ElementAt(0).GetMetadataValue("m")); Assert.Equal("j1", project.AllEvaluatedItems.ElementAt(1).EvaluatedInclude); @@ -1902,12 +1902,12 @@ public void AllEvaluatedItems() project.AddItem("i", "i7"); project.RemoveItem(project.AllEvaluatedItems.ElementAt(1)); - Assert.Equal(6, project.AllEvaluatedItems.Count()); + Assert.Equal(6, project.AllEvaluatedItems.Count); project.MarkDirty(); project.ReevaluateIfNecessary(); - Assert.Equal(7, project.AllEvaluatedItems.Count()); + Assert.Equal(7, project.AllEvaluatedItems.Count); } finally { @@ -2002,15 +2002,15 @@ public void AllEvaluatedPropertiesSetProperty() Project project = new Project(XmlReader.Create(new StringReader(content))); - int initial = project.AllEvaluatedProperties.Count(); + int initial = project.AllEvaluatedProperties.Count; project.SetProperty("p", "1"); - Assert.Equal(initial, project.AllEvaluatedProperties.Count()); + Assert.Equal(initial, project.AllEvaluatedProperties.Count); project.ReevaluateIfNecessary(); - Assert.Equal(initial + 1, project.AllEvaluatedProperties.Count()); + Assert.Equal(initial + 1, project.AllEvaluatedProperties.Count); } /// @@ -2038,13 +2038,13 @@ public void AllEvaluatedItemDefinitionMetadata() Project project = new Project(XmlReader.Create(new StringReader(content))); - Assert.Equal(4, project.AllEvaluatedItemDefinitionMetadata.Count()); + Assert.Equal(4, project.AllEvaluatedItemDefinitionMetadata.Count); Assert.Equal("2", project.AllEvaluatedItemDefinitionMetadata.ElementAt(1).EvaluatedValue); Assert.Equal("1;2", project.AllEvaluatedItemDefinitionMetadata.ElementAt(3).EvaluatedValue); // Verify lists are cleared on reevaluation - Assert.Equal(4, project.AllEvaluatedItemDefinitionMetadata.Count()); + Assert.Equal(4, project.AllEvaluatedItemDefinitionMetadata.Count); } /// diff --git a/src/MSBuild/OutOfProcTaskAppDomainWrapperBase.cs b/src/MSBuild/OutOfProcTaskAppDomainWrapperBase.cs index b1f085e2da1..2a7c4f8e842 100644 --- a/src/MSBuild/OutOfProcTaskAppDomainWrapperBase.cs +++ b/src/MSBuild/OutOfProcTaskAppDomainWrapperBase.cs @@ -406,7 +406,7 @@ IDictionary taskParams foreach (PropertyInfo value in finalPropertyValues) { // only record outputs - if (value.GetCustomAttributes(typeof(OutputAttribute), true).Count() > 0) + if (value.GetCustomAttributes(typeof(OutputAttribute), true).Length > 0) { try { diff --git a/src/Tasks.UnitTests/ResourceManagement_Tests.cs b/src/Tasks.UnitTests/ResourceManagement_Tests.cs index d75cdd4e120..a7d6d656f81 100644 --- a/src/Tasks.UnitTests/ResourceManagement_Tests.cs +++ b/src/Tasks.UnitTests/ResourceManagement_Tests.cs @@ -23,7 +23,7 @@ public void SingleCoreRequest() }", ""); var filteredMessages = messages.Where(m => m.Message.StartsWith("Number of cores acquired: ")).ToArray(); - filteredMessages.Count().ShouldBe(1); + filteredMessages.Length.ShouldBe(1); GetTrailingIntegerFromMessage(filteredMessages[0]).ShouldBeGreaterThan(0); } @@ -38,7 +38,7 @@ public void SingleCoreRequestWithNoRelease() }", " "); var filteredMessages = messages.Where(m => m.Message.StartsWith("Number of cores acquired: ")).ToArray(); - filteredMessages.Count().ShouldBe(2); + filteredMessages.Length.ShouldBe(2); int grantedCores1 = GetTrailingIntegerFromMessage(filteredMessages[0]); int grantedCores2 = GetTrailingIntegerFromMessage(filteredMessages[1]); @@ -65,7 +65,7 @@ public void SingleCoreRequestWithReacquire() }", ""); var filteredMessages = messages.Where(m => m.Message.StartsWith("Number of cores acquired: ")).ToArray(); - filteredMessages.Count().ShouldBe(2); + filteredMessages.Length.ShouldBe(2); int grantedCores1 = GetTrailingIntegerFromMessage(filteredMessages[0]); int grantedCores2 = GetTrailingIntegerFromMessage(filteredMessages[1]); diff --git a/src/Tasks.UnitTests/RoslynCodeTaskFactory_Tests.cs b/src/Tasks.UnitTests/RoslynCodeTaskFactory_Tests.cs index eb5225d098d..d0a5e314246 100644 --- a/src/Tasks.UnitTests/RoslynCodeTaskFactory_Tests.cs +++ b/src/Tasks.UnitTests/RoslynCodeTaskFactory_Tests.cs @@ -85,7 +85,7 @@ public void RoslynCodeTaskFactory_ReuseCompilation() // with broken cache we get two Compiling messages // as we fail to reuse the first assembly - messages.Count().ShouldBe(1); + messages.Length.ShouldBe(1); } [Fact] diff --git a/src/Utilities.UnitTests/ToolLocationHelper_Tests.cs b/src/Utilities.UnitTests/ToolLocationHelper_Tests.cs index 4578651a935..47b36573b7f 100644 --- a/src/Utilities.UnitTests/ToolLocationHelper_Tests.cs +++ b/src/Utilities.UnitTests/ToolLocationHelper_Tests.cs @@ -4202,7 +4202,7 @@ public void VerifyFindRootFolderWhereAllFilesExist() string testDirectoryRoot = Path.Combine(Path.GetTempPath(), "VerifyFindRootFolderWhereAllFilesExist"); string[] rootDirectories = new string[] { Path.Combine(testDirectoryRoot, "Root1"), Path.Combine(testDirectoryRoot, "Root2") }; - for(int i = 0; i < rootDirectories.Count(); i++) + for(int i = 0; i < rootDirectories.Length; i++) { // create directory string subdir = Path.Combine(rootDirectories[i], "Subdir"); From 2670327670ba1c280f9e6ed8b15c82d2de375f00 Mon Sep 17 00:00:00 2001 From: elachlan <2433737+elachlan@users.noreply.github.com> Date: Sat, 8 Jan 2022 14:25:16 +1000 Subject: [PATCH 2/3] Revert CodeAnalysis.ruleset --- eng/CodeAnalysis.ruleset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/CodeAnalysis.ruleset b/eng/CodeAnalysis.ruleset index 772ddf68862..2078c42fe6c 100644 --- a/eng/CodeAnalysis.ruleset +++ b/eng/CodeAnalysis.ruleset @@ -99,7 +99,7 @@ - + From eeeab49a9663c62644cb3777b4c4b4e5c459a86c Mon Sep 17 00:00:00 2001 From: elachlan <2433737+elachlan@users.noreply.github.com> Date: Sat, 8 Jan 2022 14:36:18 +1000 Subject: [PATCH 3/3] enable warning on CA1829 --- eng/Common.globalconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Common.globalconfig b/eng/Common.globalconfig index fd878420d57..2a3789073e4 100644 --- a/eng/Common.globalconfig +++ b/eng/Common.globalconfig @@ -292,7 +292,7 @@ dotnet_diagnostic.CA1827.severity = suggestion dotnet_diagnostic.CA1828.severity = warning # Use Length/Count property instead of Count() when available -dotnet_diagnostic.CA1829.severity = suggestion +dotnet_diagnostic.CA1829.severity = warning # Prefer strongly-typed Append and Insert method overloads on StringBuilder. dotnet_diagnostic.CA1830.severity = warning