示例#1
0
        private static async Task RunFormatItemAsync(IFormattingEngine engine, string item, CommandLineOptions options, CancellationToken cancellationToken)
        {
            Console.WriteLine(Path.GetFileName(item));
            string extension = Path.GetExtension(item);

            if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".sln"))
            {
                using (var workspace = CreateMSBuildWorkspace(options))
                {
                    workspace.LoadMetadataForReferencedProjects = true;
                    var solution = await workspace.OpenSolutionAsync(item, cancellationToken : cancellationToken);

                    await engine.FormatSolutionAsync(solution, cancellationToken);
                }
            }
            else
            {
                using (var workspace = CreateMSBuildWorkspace(options))
                {
                    workspace.LoadMetadataForReferencedProjects = true;
                    var project = await workspace.OpenProjectAsync(item, cancellationToken : cancellationToken);

                    await engine.FormatProjectAsync(project, cancellationToken);
                }
            }
        }
示例#2
0
        // Expects a list of paths to files or directories of DLLs containing analyzers and adds them to the engine
        internal static ImmutableArray <DiagnosticAnalyzer> AddCustomAnalyzers(IFormattingEngine engine, ImmutableArray <string> analyzerList)
        {
            foreach (var analyzerPath in analyzerList)
            {
                if (File.Exists(analyzerPath))
                {
                    var newAnalyzers = LoadAnalyzersFromAssembly(analyzerPath, true);
                    engine.AddAnalyzers(newAnalyzers);
                    return(newAnalyzers);
                }
                else if (Directory.Exists(analyzerPath))
                {
                    var DLLs = Directory.GetFiles(analyzerPath, "*.dll");
                    foreach (var dll in DLLs)
                    {
                        // allows specifying a folder that contains analyzers as well as non-analyzer DLLs without throwing
                        var newAnalyzers = LoadAnalyzersFromAssembly(dll, false);
                        if (newAnalyzers.Count() > 0)
                        {
                            engine.AddAnalyzers(newAnalyzers);
                        }
                        return(newAnalyzers);
                    }
                }
            }

            return(ImmutableArray <DiagnosticAnalyzer> .Empty);
        }
示例#3
0
        private static async Task RunFormatItemAsync(IFormattingEngine engine, string item, string language, CancellationToken cancellationToken)
        {
            Console.WriteLine(Path.GetFileName(item));
            string extension = Path.GetExtension(item);

            if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".rsp"))
            {
                using (var workspace = ResponseFileWorkspace.Create())
                {
//                    Project project = workspace.OpenCommandLineProject(item, language);
//                    await engine.FormatProjectAsync(project, cancellationToken);
                }
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".sln"))
            {
//                using (var workspace = MSBuildWorkspace.Create())
//                {
//                    workspace.LoadMetadataForReferencedProjects = true;
//                    var solution = await workspace.OpenSolutionAsync(item, cancellationToken);
//                    await engine.FormatSolutionAsync(solution, cancellationToken);
//                }
            }
            else
            {
//                using (var workspace = MSBuildWorkspace.Create())
//                {
//                    workspace.LoadMetadataForReferencedProjects = true;
//                    var project = await workspace.OpenProjectAsync(item, cancellationToken);
//                    await engine.FormatProjectAsync(project, cancellationToken);
//                }
            }
        }
        private static async Task RunFormatItemAsync(IFormattingEngine engine, string item, string language, CancellationToken cancellationToken)
        {
            Console.WriteLine(Path.GetFileName(item));
            string extension = Path.GetExtension(item);

            if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".rsp"))
            {
                using (var workspace = ResponseFileWorkspace.Create())
                {
                    Project project = workspace.OpenCommandLineProject(item, language);
                    await engine.FormatProjectAsync(project, cancellationToken);
                }
            }
            else if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".sln"))
            {
                AnalyzerManager manager = new AnalyzerManager(item);
                using (var workspace = manager.GetWorkspace())
                {
                    var solution = workspace.CurrentSolution;
                    await engine.FormatSolutionAsync(solution, cancellationToken);
                }
            }
            else
            {
                AnalyzerManager manager  = new AnalyzerManager();
                ProjectAnalyzer analyzer = manager.GetProject(item);

                using (var workspace = analyzer.GetWorkspace())
                {
                    var project = workspace.CurrentSolution.Projects.FirstOrDefault();
                    await engine.FormatProjectAsync(project, cancellationToken);
                }
            }
        }
示例#5
0
        private static async Task RunItemAsync(
            IFormattingEngine engine,
            string item,
            string language,
            bool useAnalyzers,
            bool useTabs,
            CancellationToken cancellationToken)
        {
            Console.WriteLine(Path.GetFileName(item));
            string extension = Path.GetExtension(item);

            try
            {
                if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".rsp"))
                {
                    using (var workspace = ResponseFileWorkspace.Create())
                    {
                        ModifyWorkspaceOptions(workspace, language, useTabs);
                        Project project = workspace.OpenCommandLineProject(item, language);
                        await engine.FormatProjectAsync(project, useAnalyzers, cancellationToken);
                    }
                }
                else if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".sln"))
                {
                    using (var workspace = MSBuildWorkspace.Create())
                    {
                        ModifyWorkspaceOptions(workspace, language, useTabs);
                        workspace.LoadMetadataForReferencedProjects = true;
                        var solution = await workspace.OpenSolutionAsync(item, cancellationToken);

                        await engine.FormatSolutionAsync(solution, useAnalyzers, cancellationToken);
                    }
                }
                else
                {
                    using (var workspace = MSBuildWorkspace.Create())
                    {
                        ModifyWorkspaceOptions(workspace, language, useTabs);
                        workspace.LoadMetadataForReferencedProjects = true;
                        var project = await workspace.OpenProjectAsync(item, cancellationToken);

                        await engine.FormatProjectAsync(project, useAnalyzers, cancellationToken);
                    }
                }
            }
            catch (Microsoft.Build.Exceptions.InvalidProjectFileException)
            {
                // Can occur if for example a Mono based project with unknown targets files is supplied
                Console.WriteLine("Invalid project file in target {0}", item);
            }
        }
示例#6
0
        private static bool SetRuleMap(IFormattingEngine engine, ImmutableDictionary <string, bool> ruleMap)
        {
            var comparer = StringComparer.OrdinalIgnoreCase;

            foreach (var entry in ruleMap)
            {
                var rule = engine.AllRules.Where(x => comparer.Equals(x.Name, entry.Key)).FirstOrDefault();
                if (rule == null)
                {
                    Console.WriteLine("Could not find rule with name {0}", entry.Key);
                    return(false);
                }

                engine.ToggleRuleEnabled(rule, entry.Value);
            }

            return(true);
        }
示例#7
0
        private static bool SetRuleMap(IFormattingEngine engine, ImmutableDictionary<string, bool> ruleMap)
        {
            var comparer = StringComparer.OrdinalIgnoreCase;
            foreach (var entry in ruleMap)
            {
                var rule = engine.AllRules.Where(x => comparer.Equals(x.Name, entry.Key)).FirstOrDefault();
                if (rule == null)
                {
                    Console.WriteLine("Could not find rule with name {0}", entry.Key);
                    return false;
                }

                engine.ToggleRuleEnabled(rule, entry.Value);
            }

            return true;
        }
示例#8
0
 private static async Task RunFormatItemAsync(IFormattingEngine engine, string item, string language, CancellationToken cancellationToken)
 { 
     Console.WriteLine(Path.GetFileName(item));
     string extension = Path.GetExtension(item);
     if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".rsp"))
     {
         using (var workspace = ResponseFileWorkspace.Create())
         {
             Project project = workspace.OpenCommandLineProject(item, language);
             await engine.FormatProjectAsync(project, cancellationToken);
         }
     }
     else if (StringComparer.OrdinalIgnoreCase.Equals(extension, ".sln"))
     {
         using (var workspace = MSBuildWorkspace.Create())
         {
             workspace.LoadMetadataForReferencedProjects = true;
             var solution = await workspace.OpenSolutionAsync(item, cancellationToken);
             await engine.FormatSolutionAsync(solution, cancellationToken);
         }
     }
     else
     {
         using (var workspace = MSBuildWorkspace.Create())
         {
             workspace.LoadMetadataForReferencedProjects = true;
             var project = await workspace.OpenProjectAsync(item, cancellationToken);
             await engine.FormatProjectAsync(project, cancellationToken);
         }
     }
 }
 /// <summary>
 /// Initializes a new instance of the ParamBuilderFormatter class.
 /// </summary>
 /// <param name="engine"></param>
 public ParamBuilderFormatter(IFormattingEngine engine)
 {
     _engine = engine;
 }
示例#10
0
        private static bool SetDiagnosticsEnabledMap(IFormattingEngine engine, ImmutableDictionary<string, bool> ruleMap)
        {
            var comparer = StringComparer.OrdinalIgnoreCase;
            foreach (var entry in ruleMap)
            {
                var diagnosticDescriptor = engine.AllSupportedDiagnostics.Where(x => comparer.Equals(x.Id, entry.Key)).FirstOrDefault();
                if (diagnosticDescriptor == null)
                {
                    Console.WriteLine("Could not find diagnostic with ID {0}", entry.Key);
                    return false;
                }

                engine.ToggleDiagnosticEnabled(diagnosticDescriptor.Id, entry.Value);
            }

            return true;
        }
示例#11
0
 /// <summary>
 /// Initializes a new instance of the ParamBuilderFormatter class.
 /// </summary>
 /// <param name="engine"></param>
 public ParamBuilderFormatter(IFormattingEngine engine)
 {
     _engine = engine;
 }