using System.Collections.Generic; using Codelyzer.Analysis; using Codelyzer.Analysis.Build; using CTA.Rules.Models; using CTA.Rules.Update; namespace CTA.Rules.PortCore { public class VisualBasicProjectRewriter : ProjectRewriter { public readonly ProjectType _projectType; /// /// Initializes a new instance of ProjectRewriter using an existing analysis /// /// The analysis results of the project /// ProjectConfiguration for this project public VisualBasicProjectRewriter(AnalyzerResult analyzerResult, ProjectConfiguration projectConfiguration) : base(analyzerResult, projectConfiguration) { _projectType = projectConfiguration.ProjectType; } /// /// Initializes a new instance of ProjectRewriter using an existing analysis /// /// The analysis results of the project /// ProjectConfiguration for this project public VisualBasicProjectRewriter(IDEProjectResult projectResult, ProjectConfiguration projectConfiguration) : base(projectResult, projectConfiguration) { _projectType = projectConfiguration.ProjectType; } /// /// Initializes the ProjectRewriter then runs it /// public override ProjectResult Run() { if (isExludedFromPorting(_projectType)) return _projectResult; var projectResult = Initialize(); return Run(projectResult.ProjectActions); } /// /// Runs the project rewriter using a previously initialized analysis /// /// public override ProjectResult Run(ProjectActions projectActions) { if (isExludedFromPorting(_projectType)) return _projectResult; base.Run(projectActions); return _projectResult; } /// /// Runs the project rewriter using an incremental analysis /// /// /// public override List RunIncremental(List updatedFiles, RootNodes projectRules) { List ideFileActions = new List(); if(!isExludedFromPorting(_projectType)) ideFileActions = base.RunIncremental(updatedFiles, projectRules); return ideFileActions; } private bool isExludedFromPorting(ProjectType projectType) { return projectType == ProjectType.VBWebForms || projectType == ProjectType.VBNetMvc; } } }