static void Main(string[] args) { var file = new RulesetFile(); var sources = typeof(Program) .Assembly .GetTypes() .Where(t => typeof(RuleSource).IsAssignableFrom(t)) .Where(t => !t.IsAbstract) .Where(t => t.GetConstructor(new Type[0]) != null) .Select(Activator.CreateInstance) .Cast <RuleSource>(); foreach (var source in sources) { var section = source.GetSection(); file.AnalyzerSettings.Add(new AnalyzerSetting { AnalyzerId = source.AnalyzerId, RuleNamespace = source.AnalyzerId, Sections = { section } }); } Console.WriteLine(file.Generate()); }
public void Costructor_GetXmlFromFile_IfFileExist() { var expectedXml = $"<?xml version=\"1.0\" encoding=\"utf-8\"?><RuleSet Name=\"{Guid.NewGuid()}\" Description=\"{Guid.NewGuid()}\" ToolsVersion=\"10.0\"></RuleSet>"; var expectedXmlPath = Path.Combine(workDirectory.Path, "expected.ruleset"); File.WriteAllText(expectedXmlPath, expectedXml); var rulesetFile = new RulesetFile(expectedXmlPath); Assert.AreEqual(expectedXml, rulesetFile.Document.OuterXml); }
public void Include_AddRulesetPathAsIs_IfRulesetPathIsMicrosoftRules() { var dummyPath = Path.Combine(workDirectory.Path, $"{Guid.NewGuid()}.ruleset"); var rulesetFile = new RulesetFile(dummyPath); var microsoftRules = "allrules.ruleset"; rulesetFile.Include(microsoftRules); Console.WriteLine($"Xml should be contains Include with Path '{microsoftRules}':"); Console.WriteLine(rulesetFile.Document.OuterXml); Assert.IsNotNull(SearchByXpath(rulesetFile.Document, $"a:RuleSet/a:Include[@Path = '{microsoftRules}']").Single()); }
public void Include_AddRulesetPathAsRelative_IfRulesetPathIsAbsolute() { var dummyPath = Path.Combine(workDirectory.Path, $"{Guid.NewGuid()}.ruleset"); var rulesetFile = new RulesetFile(dummyPath); var expectedRelRulesetPath = $"..\\dummyFolder\\{Guid.NewGuid()}.ruleset"; var absoluteRulesetPath = Path.GetFullPath(Path.Combine(workDirectory.Path, expectedRelRulesetPath)); rulesetFile.Include(absoluteRulesetPath); Console.WriteLine($"Xml should be contains Include with Path '{expectedRelRulesetPath}':"); Console.WriteLine(rulesetFile.Document.OuterXml); Assert.IsNotNull(SearchByXpath(rulesetFile.Document, $"a:RuleSet/a:Include[@Path = '{expectedRelRulesetPath}']").Single()); }
public void BindRuleset_NoBindRuleset_IfBindingAlreadyExists() { var rulesetName = $"Other.ruleset"; var rulesetPath = Path.Combine(workDirectory.Path, rulesetName); var rulesetFile = new RulesetFile(rulesetPath); var projectFile = CreateProjectFile(defaultCsprojXml); projectFile.BindRuleset(rulesetFile); Console.WriteLine($"ProjectFile should be contains 2 old rulesetBindings:"); Console.WriteLine(projectFile.Document.OuterXml); var rulesetBindings = SearchByXpath(projectFile.Document, "//a:CodeAnalysisRuleSet"); Assert.AreEqual(2, rulesetBindings.Count); }
public void Include_NotAddRuleset_IfCurrentPathAlreadyIncluded() { var dummyPath = Path.Combine(workDirectory.Path, $"{Guid.NewGuid()}.ruleset"); var rulesetFile = new RulesetFile(dummyPath); var rulesetPath = $"dummyFolder\\{Guid.NewGuid()}.ruleset"; rulesetFile.Include(rulesetPath); rulesetFile.Include(rulesetPath); rulesetFile.Include(rulesetPath); Console.WriteLine($"Xml should be contains only one Include with Path '{rulesetPath}':"); Console.WriteLine(rulesetFile.Document.OuterXml); Assert.IsNotNull(SearchByXpath(rulesetFile.Document, $"a:RuleSet/a:Include[@Path = '{rulesetPath}']").Single()); }
public void Costructor_GetXmlFromTemplate_IfFileNotExist() { var nullName = Guid.NewGuid().ToString(); var nullPath = Path.Combine(workDirectory.Path, $"{nullName}.ruleset"); if (File.Exists(nullPath)) { File.Delete(nullPath); } var rulesetFile = new RulesetFile(nullPath); Console.WriteLine($"Xml should be contains RuleSet with Name '{nullName}':"); Console.WriteLine(rulesetFile.Document.OuterXml); Assert.IsNotNull(SearchByXpath(rulesetFile.Document, $"/a:RuleSet[@Name = '{nullName}']").Single()); }
public void BindRuleset_MoveOldRulesetBindings_FromProjectFileToRulesetFile() { var rulesetName = $"{Guid.NewGuid()}.ruleset"; var rulesetPath = Path.Combine(workDirectory.Path, rulesetName); var rulesetFile = new RulesetFile(rulesetPath); var projectFile = CreateProjectFile(defaultCsprojXml); projectFile.BindRuleset(rulesetFile); Console.WriteLine($"ProjectFile should be contains only one CodeAnalysisRuleSet with value '{rulesetName}':"); Console.WriteLine(projectFile.Document.OuterXml); var rulesetBinding = SearchByXpath(projectFile.Document, "//a:CodeAnalysisRuleSet").Single(); Assert.AreEqual(rulesetName, rulesetBinding.InnerText); Console.WriteLine($"RulesetFile should be contains oldRulesetBindings:"); Console.WriteLine(rulesetFile.Document.OuterXml); var oldRulesetBindings = SearchByXpath(rulesetFile.Document, "//a:Include"); Assert.AreEqual(2, oldRulesetBindings.Count); }