diff --git a/tools/MultiProjectValidator/AnalysisResult.cs b/tools/MultiProjectValidator/AnalysisResult.cs index 0e9ff65d5..30f8c2f33 100644 --- a/tools/MultiProjectValidator/AnalysisResult.cs +++ b/tools/MultiProjectValidator/AnalysisResult.cs @@ -5,16 +5,16 @@ namespace MultiProjectValidator public class AnalysisResult { - private List _messages; + private IEnumerable _messages; private bool _passed; - public AnalysisResult(List messages, bool passed) + public AnalysisResult(IEnumerable messages, bool passed) { _messages = messages; _passed = passed; } - public List Messages + public IEnumerable Messages { get { diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs index 59a51096e..e1b889f0f 100644 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs +++ b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyGroup.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace ProjectSanity.AnalysisRules.DependencyMismatch +namespace MultiProjectValidator.AnalysisRules.DependencyMismatch { internal class DependencyGroup { diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs index b91e3298c..7c2669dec 100644 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs +++ b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatch/DependencyInfo.cs @@ -1,6 +1,6 @@ using Microsoft.DotNet.ProjectModel; -namespace ProjectSanity.AnalysisRules.DependencyMismatch +namespace MultiProjectValidator.AnalysisRules.DependencyMismatch { internal class DependencyInfo { diff --git a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs index 67fab1014..64794e843 100644 --- a/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs +++ b/tools/MultiProjectValidator/AnalysisRules/DependencyMismatchRule.cs @@ -3,24 +3,30 @@ using System.Collections.Generic; using System.Linq; using Microsoft.DotNet.ProjectModel; using System.Text; -using ProjectSanity.AnalysisRules.DependencyMismatch; +using MultiProjectValidator.AnalysisRules.DependencyMismatch; namespace MultiProjectValidator.AnalysisRules { public class DependencyMismatchRule : IAnalysisRule { - public AnalysisResult Evaluate(List projectContexts) + public AnalysisResult Evaluate(IEnumerable projectContexts) { - var targetGroupedContexts = GroupContextsByTarget(projectContexts); + var filteredContexts = FilterContextList(projectContexts); + var targetGroupedContexts = GroupContextsByTarget(filteredContexts); var failureMessages = EvaluateProjectContextTargetGroups(targetGroupedContexts); - var pass = failureMessages.Count == 0; + var pass = failureMessages.Count() == 0; var result = new AnalysisResult(failureMessages, pass); return result; } - private List EvaluateProjectContextTargetGroups(Dictionary> targetGroupedProjectContexts) + private IEnumerable FilterContextList(IEnumerable projectContexts) + { + return projectContexts.Where(context=> !context.TargetIsDesktop()); + } + + private IEnumerable EvaluateProjectContextTargetGroups(Dictionary> targetGroupedProjectContexts) { var failureMessages = new List(); @@ -42,13 +48,12 @@ namespace MultiProjectValidator.AnalysisRules return failureMessages; } - private List EvaluateProjectContextTargetGroup(List targetProjectContextGroup) + private List EvaluateProjectContextTargetGroup(IEnumerable targetProjectContextGroup) { var failedMessages = new List(); var dependencyGroups = CreateDependencyGroups(targetProjectContextGroup); - foreach (var dependencyGroup in dependencyGroups) { if(dependencyGroup.HasConflict) @@ -80,7 +85,7 @@ namespace MultiProjectValidator.AnalysisRules return sb.ToString(); } - private Dictionary> GroupContextsByTarget(List projectContexts) + private Dictionary> GroupContextsByTarget(IEnumerable projectContexts) { var targetContextMap = new Dictionary>(); foreach (var context in projectContexts) @@ -103,7 +108,7 @@ namespace MultiProjectValidator.AnalysisRules return targetContextMap; } - private List CreateDependencyGroups(List projectContexts) + private List CreateDependencyGroups(IEnumerable projectContexts) { var libraryNameDependencyGroupMap = new Dictionary(); diff --git a/tools/MultiProjectValidator/IAnalysisRule.cs b/tools/MultiProjectValidator/IAnalysisRule.cs index 7130bca79..7a7adbc68 100644 --- a/tools/MultiProjectValidator/IAnalysisRule.cs +++ b/tools/MultiProjectValidator/IAnalysisRule.cs @@ -5,6 +5,6 @@ namespace MultiProjectValidator { public interface IAnalysisRule { - AnalysisResult Evaluate(List projectContexts); + AnalysisResult Evaluate(IEnumerable projectContexts); } } diff --git a/tools/MultiProjectValidator/ProjectContextExtensions.cs b/tools/MultiProjectValidator/ProjectContextExtensions.cs new file mode 100644 index 000000000..64f8de36c --- /dev/null +++ b/tools/MultiProjectValidator/ProjectContextExtensions.cs @@ -0,0 +1,17 @@ +using System.IO; +using System.Collections.Generic; +using Microsoft.DotNet.ProjectModel; + +namespace MultiProjectValidator +{ + public static class ProjectContextExtensions + { + private static readonly string s_desktopTfmPrefix = ".NETFramework"; + public static bool TargetIsDesktop(this ProjectContext context) + { + var targetFramework = context.TargetFramework.ToString(); + + return targetFramework.StartsWith(s_desktopTfmPrefix); + } + } +} diff --git a/tools/MultiProjectValidator/ProjectLoader.cs b/tools/MultiProjectValidator/ProjectLoader.cs index e0088568b..097697881 100644 --- a/tools/MultiProjectValidator/ProjectLoader.cs +++ b/tools/MultiProjectValidator/ProjectLoader.cs @@ -6,7 +6,7 @@ namespace MultiProjectValidator { public class ProjectLoader { - private static readonly string PROJECT_FILENAME = "project.json"; + private static readonly string s_projectFileName = "project.json"; public static List Load(string rootPath, bool recursive=true) { @@ -18,7 +18,7 @@ namespace MultiProjectValidator private static string[] DiscoverProjectFiles(string rootPath) { - return Directory.GetFiles(rootPath, PROJECT_FILENAME, SearchOption.AllDirectories); + return Directory.GetFiles(rootPath, s_projectFileName, SearchOption.AllDirectories); } private static List LoadProjectContexts(string[] projectFiles) @@ -29,7 +29,7 @@ namespace MultiProjectValidator { var fileTargetContexts = ProjectContext.CreateContextForEachTarget(file); - projectContexts.AddRange(fileTargetContexts); + projectContexts.AddRange(fileTargetContexts); } return projectContexts;