
A tool which searches recursively for project.json files, runs a set of analyses and reports on the result. For CLI we have only one rule currently, that Dependencies between projects must be equivalent to avoid stomping.
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.DotNet.ProjectModel;
|
|
using MultiProjectValidator.AnalysisRules;
|
|
|
|
namespace MultiProjectValidator
|
|
{
|
|
public class ProjectAnalyzer
|
|
{
|
|
|
|
public static ProjectAnalyzer Create(List<ProjectContext> projectContexts)
|
|
{
|
|
// Any Additional rules would be added here
|
|
var rules = new List<IAnalysisRule>
|
|
{
|
|
new DependencyMismatchRule()
|
|
};
|
|
|
|
return new ProjectAnalyzer(rules, projectContexts);
|
|
}
|
|
|
|
private List<ProjectContext> projectContexts;
|
|
private List<IAnalysisRule> rules;
|
|
|
|
private ProjectAnalyzer(List<IAnalysisRule> rules, List<ProjectContext> projectContexts)
|
|
{
|
|
this.rules = rules;
|
|
this.projectContexts = projectContexts;
|
|
}
|
|
|
|
public List<AnalysisResult> DoAnalysis()
|
|
{
|
|
var results = new List<AnalysisResult>();
|
|
|
|
foreach(var rule in rules)
|
|
{
|
|
results.Add(rule.Evaluate(projectContexts));
|
|
}
|
|
|
|
return results;
|
|
}
|
|
|
|
}
|
|
}
|