From a9f9aa18342108f3f4c039dd1a937c6cac14b5e8 Mon Sep 17 00:00:00 2001 From: "Matthew Parker [SSW]" <61717342+MattParkerDev@users.noreply.github.com> Date: Sun, 21 Jan 2024 14:39:54 +1000 Subject: [PATCH] Add TreatWarningsAsErrors to README for CLI --- .../Commands/TreatWarningsAsErrorsCommand.cs | 22 +++------ DotNetSolutionTools.Core/WarningsAsErrors.cs | 45 +++++++------------ README.md | 6 +-- 3 files changed, 25 insertions(+), 48 deletions(-) diff --git a/DotNetSolutionTools.CLI/Commands/TreatWarningsAsErrorsCommand.cs b/DotNetSolutionTools.CLI/Commands/TreatWarningsAsErrorsCommand.cs index 1e835d5..6b980e3 100644 --- a/DotNetSolutionTools.CLI/Commands/TreatWarningsAsErrorsCommand.cs +++ b/DotNetSolutionTools.CLI/Commands/TreatWarningsAsErrorsCommand.cs @@ -24,37 +24,29 @@ public class TreatWarningsAsErrorsCommand : Command FindCSharpProjectsMissingTreatWarningsAsErrors(string solutionFilePath) { var solutionFile = SolutionFile.Parse(solutionFilePath); - var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( - solutionFile - ); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile(solutionFile); var projectsMissingImplicitUsings = FindCSharpProjectsMissingTreatWarningsAsErrors(csprojList); - var projectsMissingImplicitUsingsStringList = projectsMissingImplicitUsings - .Select(x => x.FullPath) - .ToList(); + var projectsMissingImplicitUsingsStringList = projectsMissingImplicitUsings.Select(x => x.FullPath).ToList(); return projectsMissingImplicitUsingsStringList; } @@ -26,8 +22,8 @@ public static class WarningsAsErrors foreach (var project in projectList) { - var treatWarningsAsErrors = project.PropertyGroups - .SelectMany(x => x.Properties) + var treatWarningsAsErrors = project + .PropertyGroups.SelectMany(x => x.Properties) .FirstOrDefault(x => x.Name == "TreatWarningsAsErrors"); if (treatWarningsAsErrors is null || treatWarningsAsErrors.Value is not "true") { @@ -37,13 +33,11 @@ public static class WarningsAsErrors return projectsMissingTreatWarningsAsErrors; } - + public static void AddMissingTreatWarningsAsErrorsToSolution(string solutionFilePath) { var solutionFile = SolutionFile.Parse(solutionFilePath); - var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( - solutionFile - ); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile(solutionFile); var projectsMissingImplicitUsings = FindCSharpProjectsMissingTreatWarningsAsErrors(csprojList); AddMissingTreatWarningsAsErrors(projectsMissingImplicitUsings); } @@ -51,36 +45,29 @@ public static class WarningsAsErrors public static void RemoveAllTreatWarningsAsErrorsInSolution(string solutionFilePath) { var solutionFile = SolutionFile.Parse(solutionFilePath); - var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile( - solutionFile - ); + var csprojList = SolutionProjectParity.GetCSharpProjectObjectsFromSolutionFile(solutionFile); RemoveTreatWarningsAsErrors(csprojList); } - - public static void AddMissingTreatWarningsAsErrors( - List projectsMissingImplicitUsings - ) + + public static void AddMissingTreatWarningsAsErrors(List projectsMissingImplicitUsings) { foreach (var project in projectsMissingImplicitUsings) { if (ProjectIsMissingTreatWarningsAsErrors(project)) { - project.AddProperty("TreatWarningsAsErrors", "true"); project.Save(); FormatCsproj.FormatCsprojFile(project.FullPath); } } } - - public static void RemoveTreatWarningsAsErrors( - List projectList - ) + + public static void RemoveTreatWarningsAsErrors(List projectList) { foreach (var project in projectList) { - var treatWarningsAsErrors = project.PropertyGroups - .SelectMany(x => x.Properties) + var treatWarningsAsErrors = project + .PropertyGroups.SelectMany(x => x.Properties) .FirstOrDefault(x => x.Name == "TreatWarningsAsErrors"); if (treatWarningsAsErrors is not null) { @@ -93,8 +80,8 @@ public static class WarningsAsErrors private static bool ProjectIsMissingTreatWarningsAsErrors(ProjectRootElement project) { - var implicitUsings = project.PropertyGroups - .SelectMany(x => x.Properties) + var implicitUsings = project + .PropertyGroups.SelectMany(x => x.Properties) .FirstOrDefault(x => x.Name == "TreatWarningsAsErrors"); if (implicitUsings is null) { @@ -107,7 +94,7 @@ public static class WarningsAsErrors private static bool ProjectBuildSuccessfully(ProjectRootElement project) { // build the project - var buildProject = new Microsoft.Build.Evaluation.Project(project); + var buildProject = new Microsoft.Build.Evaluation.Project(project); // retrieve warnings var buildResult = buildProject.Build(); return buildResult; diff --git a/README.md b/README.md index af719cb..b037741 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,9 @@ _options_ `-d|--enable-disabled` enables disabled implicit usings in all project files `-a|--enable-all` enables implicit usings in all project files -**warnings-as-errors** `` **NOT IMPLEMENTED IN CLI YET** Find projects in sln that don't have TreatWarningsAsErrors enabled. Optionally enables them. +**warnings-as-errors** `` Find projects in sln that don't have TreatWarningsAsErrors enabled. Optionally enables them. _options_ -`-m|--add-missing` adds missing TreatWarningsAsErrors to all project files -`-d|--enable-disabled` enables disabled TreatWarningsAsErrors in all project files -`-a|--enable-all` enables TreatWarningsAsErrors in all project files +`-m|--add-missing` adds missing TreatWarningsAsErrors to all project files **clear-bin-obj** `` **NOT IMPLEMENTED IN CLI YET** Deletes all bin and obj folders, and node_modules folders in the solution folder.