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";
}