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

AddNewRoslynPack() public method

Adds the new roslyn pack.
public AddNewRoslynPack ( string dllPath, bool updateProps ) : bool
dllPath string The DLL path.
updateProps bool
return bool
        public bool AddNewRoslynPack(string dllPath, bool updateProps)
        {
            var name = Path.GetFileName(dllPath);

            if (!File.Exists(dllPath))
            {
                return false;
            }

            try
            {
                var diagnostic = new VSSonarExtensionDiagnostic(name, dllPath);

                if (this.ExtensionDiagnostics.ContainsKey(name))
                {
                    this.notificationManager.ReportMessage(new Message { Id = "RoslynManager", Data = name + " already added to list." });
                    return false;
                }

                if (diagnostic.AvailableChecks.Count != 0)
                {
                    this.SyncDiagnosticInServer(diagnostic);
                    this.ExtensionDiagnostics.Add(name, diagnostic);
                }
                else
                {
                    this.notificationManager.ReportMessage(new Message { Id = "RoslynManager", Data = name + " contains 0 diagnostics, will not import. Perhaps its a reference." });
                    return false;
                }
            }
            catch (Exception ex)
            {
                this.notificationManager.ReportMessage(new Message { Id = "RoslynManager", Data = name + " failed, will skip: " + ex.Message });
                this.notificationManager.ReportException(ex);
                return false;
            }

            return true;
        }

Usage Example

        public void AddsRoslynCheckOk()
        {
            var mockTranslator = new Mock<ISQKeyTranslator>();
            var mockNotifier = new Mock<INotificationManager>();
            var pluginAnalysis = new Mock<IAnalysisPlugin>();
            var mockRest = new Mock<ISonarRestService>();
            var mockLogger = new Mock<INotificationManager>();
            var mockConfiguration = new Mock<IConfigurationHelper>();
            var mockSourceProvider = new Mock<ISourceControlProvider>();
            var mockVsHelper = new Mock<IVsEnvironmentHelper>();

            var plugins = new List<IAnalysisPlugin>();
            plugins.Add(pluginAnalysis.Object);

            var roslynModel = new RoslynManagerModel(plugins, mockNotifier.Object, mockConfiguration.Object);

            Assert.That(roslynModel.AddNewRoslynPack(Path.Combine(this.runninPath, "TestData", "SonarLintDummy.dll")), Is.True);
            Assert.That(roslynModel.ExtensionDiagnostics.Count, Is.EqualTo(3));

            Assert.That(roslynModel.AddNewRoslynPack(Path.Combine(this.runninPath, "externalAnalysers", "roslynDiagnostics", "SonarLint.dll")), Is.False);
            Assert.That(roslynModel.ExtensionDiagnostics.Count, Is.EqualTo(3));
        }