From b9b2d2c4ec3dccd8a9959b2f48c0b5bf76be4896 Mon Sep 17 00:00:00 2001 From: "Matthew Parker [SSW]" <61717342+MattParkerDev@users.noreply.github.com> Date: Wed, 1 Nov 2023 13:45:02 +1000 Subject: [PATCH] warnings as errors --- DotNetSolutionTools.Core/WarningsAsErrors.cs | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/DotNetSolutionTools.Core/WarningsAsErrors.cs b/DotNetSolutionTools.Core/WarningsAsErrors.cs index 6435703..b1d8408 100644 --- a/DotNetSolutionTools.Core/WarningsAsErrors.cs +++ b/DotNetSolutionTools.Core/WarningsAsErrors.cs @@ -37,7 +37,26 @@ public static class WarningsAsErrors return projectsMissingTreatWarningsAsErrors; } + + public static void AddMissingTreatWarningsAsErrorsToSolution(string solutionFilePath) + { + var solutionFile = SolutionFile.Parse(solutionFilePath); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( + solutionFile + ); + var projectsMissingImplicitUsings = FindCSharpProjectsMissingTreatWarningsAsErrors(csprojList); + AddMissingTreatWarningsAsErrors(projectsMissingImplicitUsings); + } + public static void RemoveAllTreatWarningsAsErrorsInSolution(string solutionFilePath) + { + var solutionFile = SolutionFile.Parse(solutionFilePath); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( + solutionFile + ); + RemoveTreatWarningsAsErrors(csprojList); + } + public static void AddMissingTreatWarningsAsErrors( List projectsMissingImplicitUsings ) @@ -53,6 +72,24 @@ public static class WarningsAsErrors } } } + + public static void RemoveTreatWarningsAsErrors( + List projectList + ) + { + foreach (var project in projectList) + { + var treatWarningsAsErrors = project.PropertyGroups + .SelectMany(x => x.Properties) + .FirstOrDefault(x => x.Name == "TreatWarningsAsErrors"); + if (treatWarningsAsErrors is not null) + { + treatWarningsAsErrors.Parent.RemoveChild(treatWarningsAsErrors); + project.Save(); + FormatCsproj.FormatCsprojFile(project.FullPath); + } + } + } private static bool ProjectIsMissingTreatWarningsAsErrors(ProjectRootElement project) {