VSSonarExtensionUi.Model.Configuration.RoslynManagerModel.AutoDetectInstalledAnalysers C# (CSharp) Method

AutoDetectInstalledAnalysers() public method

Automatics the detect installed analyzers.
public AutoDetectInstalledAnalysers ( ) : string
return string
        public string AutoDetectInstalledAnalysers()
        {
            var paths = new Dictionary<string, string>();
            using (var workspace = MSBuildWorkspace.Create())
            {
                var solution = workspace.OpenSolutionAsync(Path.Combine(this.associatedProject.SolutionRoot, this.associatedProject.SolutionName)).Result;

                foreach (var item in solution.Projects)
                {
                    foreach (var analyser in item.AnalyzerReferences)
                    {
                        var name = Path.GetFileNameWithoutExtension(analyser.FullPath);
                        if (!paths.ContainsKey(name) && !name.Contains("SonarLint") && !name.Contains("SonarAnalyzer"))
                        {
                            paths.Add(name, analyser.FullPath);
                        }
                    }
                }
            }

            var isOk = true;
            foreach (var item in paths)
            {
                if (!this.AddNewRoslynPack(item.Value, false))
                {
                    this.notificationManager.WriteMessage("Failed to add roslyn dll: " + item.Value);
                    isOk = false;
                }
            }

            return isOk ? paths.Count == 0 ? "No diagnostics found" : "" : "Not all diagnostics were imported, check output log";
        }