public GeneralOptionsDialogControl(ISonarLintSettings settings, ISonarLintDaemon daemon, IDaemonInstaller installer, ICommand openSettingsFileCommand, ILogger logger) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (daemon == null) { throw new ArgumentNullException(nameof(daemon)); } if (installer == null) { throw new ArgumentNullException(nameof(installer)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } if (openSettingsFileCommand == null) { throw new ArgumentNullException(nameof(openSettingsFileCommand)); } this.settings = settings; this.daemon = daemon; this.installer = installer; this.logger = logger; InitializeComponent(); this.OpenSettingsButton.Command = openSettingsFileCommand; }
internal TaggerProvider(ITableManagerProvider provider, ITextDocumentFactoryService textDocumentFactoryService, IContentTypeRegistryService contentTypeRegistryService, IFileExtensionRegistryService fileExtensionRegistryService, ISonarLintDaemon daemon, SVsServiceProvider serviceProvider, ISonarLintSettings settings) { this.ErrorTableManager = provider.GetTableManager(StandardTables.ErrorsTable); this.TextDocumentFactoryService = textDocumentFactoryService; this.ContentTypeRegistryService = contentTypeRegistryService; this.FileExtensionRegistryService = fileExtensionRegistryService; this.ErrorTableManager.AddSource(this, StandardTableColumnDefinitions.DetailsExpander, StandardTableColumnDefinitions.ErrorSeverity, StandardTableColumnDefinitions.ErrorCode, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.BuildTool, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.ErrorCategory, StandardTableColumnDefinitions.Text, StandardTableColumnDefinitions.DocumentName, StandardTableColumnDefinitions.Line, StandardTableColumnDefinitions.Column, StandardTableColumnDefinitions.ProjectName); this.daemon = daemon; this.dte = (_DTE)serviceProvider.GetService(typeof(_DTE)); this.settings = settings; }
internal TaggerProvider(ITableManagerProvider tableManagerProvider, ITextDocumentFactoryService textDocumentFactoryService, ISonarLintDaemon daemon, [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, ISonarLintSettings settings, ISonarLanguageRecognizer languageRecognizer, ILogger logger) { this.errorTableManager = tableManagerProvider.GetTableManager(StandardTables.ErrorsTable); this.textDocumentFactoryService = textDocumentFactoryService; this.errorTableManager.AddSource(this, StandardTableColumnDefinitions.DetailsExpander, StandardTableColumnDefinitions.ErrorSeverity, StandardTableColumnDefinitions.ErrorCode, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.BuildTool, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.ErrorCategory, StandardTableColumnDefinitions.Text, StandardTableColumnDefinitions.DocumentName, StandardTableColumnDefinitions.Line, StandardTableColumnDefinitions.Column, StandardTableColumnDefinitions.ProjectName); this.daemon = daemon; this.dte = serviceProvider.GetService <DTE>(); this.settings = settings; this.languageRecognizer = languageRecognizer; this.logger = logger; }
public static void ProcessFile(ISonarLintDaemon daemon, IIssueConsumer issueConsumer, ILogger logger, ProjectItem projectItem, string absoluteFilePath, string charset) { if (IsHeaderFile(absoluteFilePath)) { // We can't analyze header files currently because we can't get all // of the required configuration information logger.WriteLine($"Cannot analyze header files. File: '{absoluteFilePath}'"); return; } if (!IsFileInSolution(projectItem)) { logger.WriteLine($"Unable to retrieve the configuration for file '{absoluteFilePath}'. Check the file is part of a project in the current solution."); return; } string sqLanguage; string json = TryGetConfig(logger, projectItem, absoluteFilePath, out sqLanguage); if (json != null && sqLanguage != null) { daemon.RequestAnalysis(absoluteFilePath, charset, sqLanguage, json, issueConsumer); } }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { this.daemon?.Dispose(); this.daemon = null; } }
/// <summary> /// Initialization of the package; this method is called right after the package is sited, so this is the place /// where you can put all the initialization code that rely on services provided by VisualStudio. /// </summary> protected override void Initialize() { base.Initialize(); var dte = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE)); this.dteEvents = dte.Events.DTEEvents; this.dteEvents.OnStartupComplete += OnIdeStartupComplete; this.daemon = this.GetMefService <ISonarLintDaemon>(); }
public DelayedRequest(DaemonAnalyzer daemonAnalyzer, string path, string charset, IEnumerable <AnalysisLanguage> detectedLanguages, IIssueConsumer consumer) { this.daemonAnalyzer = daemonAnalyzer; this.daemon = daemonAnalyzer.daemon; this.daemonInstaller = daemonAnalyzer.installer; this.path = path; this.charset = charset; this.detectedLanguages = detectedLanguages; this.consumer = consumer; }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { this.dteEvents.OnStartupComplete -= OnIdeStartupComplete; this.daemon?.Dispose(); this.daemon = null; } }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { this.daemon?.Dispose(); this.daemon = null; statusBarDownloadProgressHandler?.Dispose(); statusBarDownloadProgressHandler = null; } }
protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { this.daemon?.Dispose(); this.daemon = null; statusBarDownloadProgressHandler?.Dispose(); statusBarDownloadProgressHandler = null; cFamilyPreCompiledHeadersEventListener?.Dispose(); cFamilyPreCompiledHeadersEventListener = null; } }
private async System.Threading.Tasks.Task InitAsync() { ILogger logger = null; try { logger = await this.GetMefServiceAsync <ILogger>(); logger.WriteLine(Resources.Strings.Daemon_Initializing); daemon = await this.GetMefServiceAsync <ISonarLintDaemon>(); var settings = await this.GetMefServiceAsync <ISonarLintSettings>(); LegacyInstallationCleanup.CleanupDaemonFiles(logger); if (daemon.IsInstalled) { if (settings.IsActivateMoreEnabled && !daemon.IsRunning) { daemon.Start(); } } else { if (settings.IsActivateMoreEnabled) { // User already agreed to have the daemon installed, so directly start download await JoinableTaskFactory.SwitchToMainThreadAsync(); new SonarLintDaemonInstaller(settings, daemon, logger).Show(); } else if (!settings.SkipActivateMoreDialog) { await JoinableTaskFactory.SwitchToMainThreadAsync(); var result = new SonarLintDaemonSplashscreen(settings).ShowDialog(); if (result == true) { new SonarLintDaemonInstaller(settings, daemon, logger).Show(); } } } } catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex)) { logger?.WriteLine(Resources.Strings.ERROR_InitializingDaemon, ex); } logger?.WriteLine(Resources.Strings.Daemon_InitializationComplete); }
private async System.Threading.Tasks.Task InitAsync() { try { logger = await this.GetMefServiceAsync <ILogger>(); logger.WriteLine(Resources.Strings.Daemon_Initializing); await DisableRuleCommand.InitializeAsync(this, logger); await CFamilyReproducerCommand.InitializeAsync(this, logger); cFamilyPreCompiledHeadersEventListener = await this.GetMefServiceAsync <IPreCompiledHeadersEventListener>(); daemon = await this.GetMefServiceAsync <ISonarLintDaemon>(); LegacyInstallationCleanup.CleanupDaemonFiles(logger); // Set up the solution tracker so we can shut down the daemon when a solution is closed var solutionTracker = await this.GetMefServiceAsync <IActiveSolutionTracker>(); solutionTracker.ActiveSolutionChanged += HandleActiveSolutionChanged; IDaemonInstaller installer = await this.GetMefServiceAsync <IDaemonInstaller>(); if (!installer.IsInstalled()) { // Set up the status bar download handler in case the user enables // support for additional languages during the VS session var sbService = await this.GetServiceAsync(typeof(IVsStatusbar)) as IVsStatusbar; statusBarDownloadProgressHandler = new StatusBarDownloadProgressHandler(sbService, installer, logger); var settings = await this.GetMefServiceAsync <ISonarLintSettings>(); if (settings.IsActivateMoreEnabled) { // User already agreed to have the daemon installed so directly start download. // No UI interation so we don't need to be on the UI thread. installer.Install(); } } } catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex)) { logger?.WriteLine(Resources.Strings.ERROR_InitializingDaemon, ex); } logger?.WriteLine(Resources.Strings.Daemon_InitializationComplete); }
internal TaggerProvider([Import] ITableManagerProvider provider, [Import] ITextDocumentFactoryService textDocumentFactoryService, [Import] ISonarLintDaemon daemon) { this.ErrorTableManager = provider.GetTableManager(StandardTables.ErrorsTable); this.TextDocumentFactoryService = textDocumentFactoryService; this.ErrorTableManager.AddSource(this, StandardTableColumnDefinitions.DetailsExpander, StandardTableColumnDefinitions.ErrorSeverity, StandardTableColumnDefinitions.ErrorCode, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.BuildTool, StandardTableColumnDefinitions.ErrorSource, StandardTableColumnDefinitions.ErrorCategory, StandardTableColumnDefinitions.Text, StandardTableColumnDefinitions.DocumentName, StandardTableColumnDefinitions.Line, StandardTableColumnDefinitions.Column, StandardTableColumnDefinitions.ProjectName); this.daemon = daemon; }
public SonarLintDaemonInstaller(ISonarLintSettings settings, ISonarLintDaemon daemon) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (daemon == null) { throw new ArgumentNullException(nameof(daemon)); } this.settings = settings; this.daemon = daemon; InitializeComponent(); }
public GeneralOptionsDialogControl(ISonarLintSettings settings, ISonarLintDaemon daemon) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (daemon == null) { throw new ArgumentNullException(nameof(daemon)); } this.settings = settings; this.daemon = daemon; InitializeComponent(); }
private async System.Threading.Tasks.Task Init() { try { this.daemon = await this.GetMefServiceAsync <ISonarLintDaemon>(); var settings = await this.GetMefServiceAsync <ISonarLintSettings>(); var logger = await this.GetMefServiceAsync <ILogger>(); LegacyInstallationCleanup.CleanupDaemonFiles(logger); if (settings.IsActivateMoreEnabled && daemon.IsInstalled) { if (!daemon.IsRunning) { daemon.Start(); } } else if (settings.IsActivateMoreEnabled) { // User already agreed to have the daemon installed, so directly start download await JoinableTaskFactory.SwitchToMainThreadAsync(); new SonarLintDaemonInstaller(settings, daemon).Show(); } else if (!settings.SkipActivateMoreDialog) { await JoinableTaskFactory.SwitchToMainThreadAsync(); var result = new SonarLintDaemonSplashscreen(settings).ShowDialog(); if (result == true) { new SonarLintDaemonInstaller(settings, daemon).Show(); } } } catch (Exception) { // Log this } }
public void SetUp() { // minimal setup to create a tagger this.mockDaemon = new Mock <ISonarLintDaemon>(); mockDaemon.Setup(d => d.IsRunning).Returns(true); this.daemon = mockDaemon.Object; var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockTextDocumentFactoryService = new Mock <ITextDocumentFactoryService>(); var textDocumentFactoryService = mockTextDocumentFactoryService.Object; var mockTextBuffer = new Mock <ITextBuffer>(); this.textBuffer = mockTextBuffer.Object; var mockTextDataModel = new Mock <ITextDataModel>(); var textDataModel = mockTextDataModel.Object; var mockTextView = new Mock <ITextView>(); mockTextView.Setup(t => t.TextBuffer).Returns(textBuffer); mockTextView.Setup(t => t.TextDataModel).Returns(textDataModel); this.textView = mockTextView.Object; this.mockTextDocument = new Mock <ITextDocument>(); mockTextDocument.Setup(d => d.FilePath).Returns(filename); mockTextDocument.Setup(d => d.Encoding).Returns(Encoding.UTF8); var textDocument = mockTextDocument.Object; mockTextDocumentFactoryService .Setup(t => t.TryGetTextDocument(It.IsAny <ITextBuffer>(), out textDocument)) .Returns(true); this.provider = new TaggerProvider(tableManagerProvider, textDocumentFactoryService, daemon); }
public DaemonAnalyzer(ISonarLintDaemon daemon, IDaemonInstaller daemonInstaller, ITelemetryManager telemetryManager) { this.daemon = daemon; this.installer = daemonInstaller; this.telemetryManager = telemetryManager; }
public void SetUp() { // minimal setup to create a tagger this.mockDaemon = new Mock <ISonarLintDaemon>(); mockDaemon.Setup(d => d.IsRunning).Returns(true); this.daemon = mockDaemon.Object; var mockTableManagerProvider = new Mock <ITableManagerProvider>(); mockTableManagerProvider.Setup(t => t.GetTableManager(StandardTables.ErrorsTable)) .Returns(new Mock <ITableManager>().Object); var tableManagerProvider = mockTableManagerProvider.Object; var mockTextDocumentFactoryService = new Mock <ITextDocumentFactoryService>(); var textDocumentFactoryService = mockTextDocumentFactoryService.Object; var mockContentTypeRegistryService = new Mock <IContentTypeRegistryService>(); mockContentTypeRegistryService.Setup(c => c.ContentTypes).Returns(Enumerable.Empty <IContentType>()); var contentTypeRegistryService = mockContentTypeRegistryService.Object; var mockProject = new Mock <Project>(); mockProject.Setup(p => p.Name).Returns("MyProject"); var project = mockProject.Object; var mockProjectItem = new Mock <ProjectItem>(); mockProjectItem.Setup(s => s.ContainingProject).Returns(project); var projectItem = mockProjectItem.Object; var mockSolution = new Mock <Solution>(); mockSolution.Setup(s => s.FindProjectItem(It.IsAny <string>())).Returns(projectItem); var solution = mockSolution.Object; var mockDTE = new Mock <DTE>(); mockDTE.Setup(d => d.Solution).Returns(solution); var dte = mockDTE.Object; var mockServiceProvider = new Mock <IServiceProvider>(); mockServiceProvider.Setup(s => s.GetService(typeof(DTE))).Returns(dte); var serviceProvider = mockServiceProvider.Object; var mockFileExtensionRegistryService = new Mock <IFileExtensionRegistryService>(); var fileExtensionRegistryService = mockFileExtensionRegistryService.Object; var mockJsContentType = new Mock <IContentType>(); mockJsContentType.Setup(c => c.IsOfType(It.IsAny <string>())).Returns(false); mockJsContentType.Setup(c => c.IsOfType("JavaScript")).Returns(true); this.jsContentType = mockJsContentType.Object; this.mockTextDocument = new Mock <ITextDocument>(); mockTextDocument.Setup(d => d.FilePath).Returns(filename); mockTextDocument.Setup(d => d.Encoding).Returns(Encoding.UTF8); var textDocument = mockTextDocument.Object; mockISonarLintSettings = new Mock <ISonarLintSettings>(); mockISonarLintSettings.Setup(s => s.IsActivateMoreEnabled).Returns(true); var sonarLintSettings = mockISonarLintSettings.Object; mockTextDocumentFactoryService .Setup(t => t.TryGetTextDocument(It.IsAny <ITextBuffer>(), out textDocument)) .Returns(true); mockLogger = new Mock <ILogger>(); var sonarLanguageRecognizer = new SonarLanguageRecognizer(contentTypeRegistryService, fileExtensionRegistryService); this.provider = new TaggerProvider(tableManagerProvider, textDocumentFactoryService, daemon, serviceProvider, sonarLintSettings, sonarLanguageRecognizer, mockLogger.Object); }
private static void ConfigureSiteMock(GeneralOptionsDialogPage testSubject, ISonarLintSettings settings, ISonarLintDaemon daemon, IDaemonInstaller installer) { var mefHostMock = new Mock <IComponentModel>(); mefHostMock.Setup(m => m.GetExtensions <ISonarLintDaemon>()).Returns(() => new[] { daemon }); mefHostMock.Setup(m => m.GetExtensions <IDaemonInstaller>()).Returns(() => new[] { installer }); mefHostMock.Setup(m => m.GetExtensions <ISonarLintSettings>()).Returns(() => new[] { settings }); mefHostMock.Setup(m => m.GetExtensions <ILogger>()).Returns(() => new[] { new TestLogger() }); mefHostMock.Setup(m => m.GetExtensions <IUserSettingsProvider>()).Returns(() => new[] { new Mock <IUserSettingsProvider>().Object }); var siteMock = new Mock <ISite>(); siteMock.As <IServiceProvider>().Setup(m => m.GetService(It.Is <Type>(t => t == typeof(SComponentModel)))).Returns(mefHostMock.Object); testSubject.Site = siteMock.Object; }