in src/CTA.Rules.RuleFiles/RulesFileLoader.cs [57:123]
public RootNodes Load()
{
var mainNamespaceFileTasks = new Task<NamespaceRecommendations>(() =>
{
NamespaceRecommendations rulesFile = new NamespaceRecommendations();
if (!string.IsNullOrEmpty(_rulesFilesDir) && Directory.Exists(_rulesFilesDir))
{
rulesFile = LoadNamespaceFile(_rulesFilesDir);
}
return rulesFile;
});
mainNamespaceFileTasks.Start();
var mainFileTask = new Task<Rootobject>(() =>
{
Rootobject rules = new Rootobject();
if (!string.IsNullOrEmpty(_rulesFilesDir) && Directory.Exists(_rulesFilesDir))
{
rules = LoadRulesFiles(_rulesFilesDir);
if (rules.NameSpaces != null)
{
rules.NameSpaces = rules.NameSpaces.Where(n => _projectReferences.Contains(new Reference() { Assembly = n.Assembly, Namespace = n.@namespace }) || (n.Assembly == Constants.Project)).ToList();
}
}
return rules;
});
mainFileTask.Start();
var overrideNamespaceFileTasks = new Task<NamespaceRecommendations>(() =>
{
NamespaceRecommendations rulesFile = new NamespaceRecommendations();
if (!string.IsNullOrEmpty(_overrideFile) && Directory.Exists(_overrideFile))
{
rulesFile = LoadNamespaceFile(_overrideFile);
}
return rulesFile;
});
overrideNamespaceFileTasks.Start();
var overrideTask = new Task<Rootobject>(() =>
{
Rootobject rules = new Rootobject();
if (!string.IsNullOrEmpty(_overrideFile) && Directory.Exists(_overrideFile))
{
rules = LoadRulesFiles(_overrideFile);
if (rules.NameSpaces != null)
{
rules.NameSpaces = rules.NameSpaces.Where(n => _projectReferences.Contains(new Reference() { Assembly = n.Assembly, Namespace = n.@namespace }) || (n.Assembly == Constants.Project && n.@namespace == Constants.Project)).ToList();
}
}
return rules;
});
overrideTask.Start();
Task.WaitAll(mainNamespaceFileTasks, overrideNamespaceFileTasks, mainFileTask, overrideTask);
RulesFileParser rulesFileParser = new RulesFileParser(mainNamespaceFileTasks.Result,
overrideNamespaceFileTasks.Result,
mainFileTask.Result,
overrideTask.Result,
_assembliesDir,
_targetFramework
);
var rootNodes = rulesFileParser.Process();
return rootNodes;
}