private void CheckDefaultConfiguration(SolutionValidatorConfigurationSection configuration) { // Folder structure: Assert.AreEqual(".folderStructure", configuration.FolderStructure.DefinitionFilePath); Assert.IsTrue(configuration.FolderStructure.Check); // C# formatting: Assert.AreEqual("csharpformatting.xml", configuration.CSharpFormatting.OptionsFilePath); Assert.IsTrue(configuration.CSharpFormatting.Check); Assert.AreEqual(1, configuration.CSharpFormatting.SourceFileFilters.Count); Assert.AreEqual(@"^src\\.*", configuration.CSharpFormatting.SourceFileFilters[0].Include); Assert.AreEqual(@".*\\obj\\(Debug|Release)\\.*", configuration.CSharpFormatting.SourceFileFilters[0].Exclude); // C# memeber reordering //Assert.AreEqual(0, configuration.CSharpFormatting.CodeMemberOrder.Count); //Assert.AreEqual(GeneratedCodeMember.StaticFields, configuration.CSharpFormatting.CodeMemberOrder[0]); // C# private field rename Assert.AreEqual("^([a-zA-Z][a-zA-Z0-9_]*$)", configuration.CSharpFormatting.PrivateFieldRename.Find); Assert.AreEqual("_$1", configuration.CSharpFormatting.PrivateFieldRename.Replace); Assert.IsTrue(configuration.ProjectFile.OutputPath.Check); // C# Remove redundant this qualifier Assert.IsTrue(configuration.ProjectFile.OutputPath.Check); // Project file / Output path: Assert.AreEqual("output", configuration.ProjectFile.OutputPath.Value); Assert.IsTrue(configuration.ProjectFile.OutputPath.Check); // Project file / required configurations: Assert.IsTrue(configuration.ProjectFile.RequiredConfigurations.Check); Assert.AreEqual(2, configuration.ProjectFile.RequiredConfigurations.Count); Assert.AreEqual("Debug", configuration.ProjectFile.RequiredConfigurations[0].Name); Assert.AreEqual("Release", configuration.ProjectFile.RequiredConfigurations[1].Name); //// Project file / check identical: Assert.IsTrue(configuration.ProjectFile.CheckIdentical.Check); Assert.AreEqual(2, configuration.ProjectFile.CheckIdentical.Count); Assert.AreEqual("AssemblyName", configuration.ProjectFile.CheckIdentical[0].PropertyName); Assert.AreEqual("RootNamespace", configuration.ProjectFile.CheckIdentical[0].OtherPropertyName); Assert.AreEqual("AssemblyName", configuration.ProjectFile.CheckIdentical[1].PropertyName); Assert.AreEqual("ProjectName", configuration.ProjectFile.CheckIdentical[1].OtherPropertyName); // Project file / check for value: Assert.IsTrue(configuration.ProjectFile.CheckIdentical.Check); Assert.AreEqual(2, configuration.ProjectFile.CheckForValue.Count); Assert.AreEqual("AppDesignerFolder", configuration.ProjectFile.CheckForValue[0].PropertyName); Assert.AreEqual("Properties", configuration.ProjectFile.CheckForValue[0].Value); Assert.AreEqual("Platform", configuration.ProjectFile.CheckForValue[1].PropertyName); Assert.AreEqual("AnyCPU", configuration.ProjectFile.CheckForValue[1].Value); }
private void CheckCustomConfiguration(SolutionValidatorConfigurationSection configuration) { // Folder structure: Assert.AreEqual("definitionFilePath", configuration.FolderStructure.DefinitionFilePath); Assert.IsFalse(configuration.FolderStructure.Check); // C# formatting: Assert.AreEqual("optionsFilePath", configuration.CSharpFormatting.OptionsFilePath); Assert.IsFalse(configuration.CSharpFormatting.Check); Assert.AreEqual(1, configuration.CSharpFormatting.SourceFileFilters.Count); Assert.AreEqual("include", configuration.CSharpFormatting.SourceFileFilters[0].Include); Assert.AreEqual("exclude", configuration.CSharpFormatting.SourceFileFilters[0].Exclude); // C# Remove redundant this qualifier Assert.IsFalse(configuration.ProjectFile.OutputPath.Check); // C# member reorder //Assert.AreEqual(1, configuration.CSharpFormatting.CodeMemberOrder.Count); //Assert.AreEqual(GeneratedCodeMember.StaticFields, configuration.CSharpFormatting.CodeMemberOrder[0].Member); // C# private field rename Assert.AreEqual("find", configuration.CSharpFormatting.PrivateFieldRename.Find); Assert.AreEqual("replace", configuration.CSharpFormatting.PrivateFieldRename.Replace); Assert.IsFalse(configuration.ProjectFile.OutputPath.Check); // Project file / Output path: Assert.AreEqual("outputPath", configuration.ProjectFile.OutputPath.Value); Assert.IsFalse(configuration.ProjectFile.OutputPath.Check); // Project file / required configurations: Assert.IsFalse(configuration.ProjectFile.RequiredConfigurations.Check); Assert.AreEqual(1, configuration.ProjectFile.RequiredConfigurations.Count); Assert.AreEqual("name", configuration.ProjectFile.RequiredConfigurations[0].Name); // Project file / check identical: Assert.IsFalse(configuration.ProjectFile.CheckIdentical.Check); Assert.AreEqual(1, configuration.ProjectFile.CheckIdentical.Count); Assert.AreEqual("propertyName", configuration.ProjectFile.CheckIdentical[0].PropertyName); Assert.AreEqual("otherPropertyName", configuration.ProjectFile.CheckIdentical[0].OtherPropertyName); // Project file / check for value: Assert.IsFalse(configuration.ProjectFile.CheckForValue.Check); Assert.AreEqual(1, configuration.ProjectFile.CheckForValue.Count); Assert.AreEqual("propertyName", configuration.ProjectFile.CheckForValue[0].PropertyName); Assert.AreEqual("value", configuration.ProjectFile.CheckForValue[0].Value); }
public RuleProcessor(string repoRootPath, SolutionValidatorConfigurationSection configuration, bool isReformatEnabled) { var projectFileHelper = Dependency.Resolve <IProjectFileHelper>(); _rules = new List <Rule>(); if (!Directory.Exists(repoRootPath)) { Logger.Error(Resources.RuleProcessor_RuleProcessor_Repository_root_folder_does_not_exists, repoRootPath); return; } _repositoryInfo = new RepositoryInfo(repoRootPath); if (configuration.FolderStructure.Check) { var definitionFilePath = configuration.FolderStructure.EvaluatedDefinitionFilePath(); if (File.Exists(definitionFilePath)) { var fileSystemHelper = Dependency.Resolve <IFileSystemHelper>(); var fileSystemRuleParser = new FileSystemRuleParser(fileSystemHelper); _rules.AddRange(fileSystemRuleParser.Parse(definitionFilePath)); } else { throw new ParseException( string.Format(Resources.RuleProcessor_RuleProcessor_Folder_structure_definition_file_not_found, definitionFilePath), 0, 0); } } if (configuration.ProjectFile.OutputPath.Check) { var rule = new OutPutPathProjectFileRule(configuration.ProjectFile.OutputPath.Value, projectFileHelper); _rules.Add(rule); } if (configuration.ProjectFile.RequiredConfigurations.Check) { foreach (var requiredConfigurationName in configuration.ProjectFile.RequiredConfigurations.Cast <ConfigurationNameElement>().Select(e => e.Name)) { var rule = new ConfigurationExistsProjectFileRule(requiredConfigurationName, projectFileHelper); _rules.Add(rule); } } if (configuration.ProjectFile.CheckIdentical.Check) { foreach (var propertiesToMatch in configuration.ProjectFile.CheckIdentical.Cast <PropertiesToMatchElement>()) { var rule = new CheckIdenticalProjectFileRule(propertiesToMatch.PropertyName, propertiesToMatch.OtherPropertyName, projectFileHelper); _rules.Add(rule); } } if (configuration.ProjectFile.CheckForValue.Check) { foreach (var propertyToCheck in configuration.ProjectFile.CheckForValue.Cast <PropertyToCheckElement>()) { var rule = new CheckForValueProjectFileRule(propertyToCheck.PropertyName, propertyToCheck.Value, projectFileHelper); _rules.Add(rule); } } if (configuration.CSharpFormatting.Check && isReformatEnabled) { var fileSystemHelper = Dependency.Resolve <IFileSystemHelper>(); ReformatRule rule; var optionsFilePath = configuration.CSharpFormatting.EvaluatedOptionsFilePath(); if (File.Exists(optionsFilePath)) { rule = new ReformatRule(optionsFilePath, configuration.CSharpFormatting.SourceFileFilters, fileSystemHelper); } else { if (configuration.CSharpFormatting.IsDefaultOptionsFilePath) { rule = new ReformatRule(null, configuration.CSharpFormatting.SourceFileFilters, fileSystemHelper); } else { throw new SolutionValidatorException( string.Format(Resources.RuleProcessor_RuleProcessor_CSharp_formatting_check_was_set_to_true, optionsFilePath)); } } _rules.Add(rule); } if (configuration.CSharpFormatting.PrivateFieldRename.Check && isReformatEnabled) { var fileSystemHelper = Dependency.Resolve <IFileSystemHelper>(); _rules.Add(new RenamePrivateFieldsRefactorRule( configuration.CSharpFormatting.PrivateFieldRename.Find, configuration.CSharpFormatting.PrivateFieldRename.Replace, configuration.CSharpFormatting.SourceFileFilters, fileSystemHelper)); } if (configuration.CSharpFormatting.RemoveRedundantThisQualifier.Check && isReformatEnabled) { var fileSystemHelper = Dependency.Resolve <IFileSystemHelper>(); _rules.Add(new RemoveRedundantThisQualifierRule( configuration.CSharpFormatting.SourceFileFilters, fileSystemHelper)); } }