public TelemetryManager(IActiveSolutionBoundTracker solutionBindingTracker, ITelemetryDataRepository telemetryRepository, IVsVersionProvider vsVersionProvider, ILogger logger, ITelemetryClient telemetryClient, ITelemetryTimer telemetryTimer, IKnownUIContexts knownUIContexts, ICurrentTimeProvider currentTimeProvider) { this.solutionBindingTracker = solutionBindingTracker; this.telemetryRepository = telemetryRepository; this.logger = logger; this.telemetryClient = telemetryClient; this.telemetryTimer = telemetryTimer; this.knownUIContexts = knownUIContexts; this.currentTimeProvider = currentTimeProvider; vsVersion = vsVersionProvider.Version; if (this.telemetryRepository.Data.InstallationDate == DateTimeOffset.MinValue) { this.telemetryRepository.Data.InstallationDate = currentTimeProvider.Now; this.telemetryRepository.Save(); } if (IsAnonymousDataShared) { EnableAllEvents(); } }
private static IdeVersionInformation GetVsVersion(IVsVersion vsVersion) { if (vsVersion == null) { return(null); } return(new IdeVersionInformation { DisplayName = vsVersion.DisplayName, InstallationVersion = vsVersion.InstallationVersion, DisplayVersion = vsVersion.DisplayVersion }); }
internal VsVersionProvider(IServiceProvider serviceProvider, ISetupConfigurationProvider setupConfigurationProvider, ILogger logger) { Version = CalculateVersion(serviceProvider, setupConfigurationProvider, logger); }
public static TelemetryPayload CreatePayload(TelemetryData telemetryData, DateTimeOffset now, BindingConfiguration bindingConfiguration, IVsVersion vsVersion) { if (telemetryData == null) { throw new ArgumentNullException(nameof(telemetryData)); } if (bindingConfiguration == null) { throw new ArgumentNullException(nameof(bindingConfiguration)); } // Note: we are capturing the data about the connected mode at the point // the data is about to be sent. This seems weird, as it depends entirely // on the solution the user happens to have open at the time, if any. // However, this is what was spec-ed in the MMF. var isConnected = bindingConfiguration?.Mode != SonarLintMode.Standalone; var isLegacyConnected = bindingConfiguration?.Mode == SonarLintMode.LegacyConnected; var isSonarCloud = IsSonarCloud(bindingConfiguration?.Project?.ServerUri); return(new TelemetryPayload { SonarLintProduct = "SonarLint Visual Studio", SonarLintVersion = SonarLintVersion, VisualStudioVersion = VisualStudioHelpers.VisualStudioVersion, VisualStudioVersionInformation = GetVsVersion(vsVersion), NumberOfDaysSinceInstallation = now.DaysPassedSince(telemetryData.InstallationDate), NumberOfDaysOfUse = telemetryData.NumberOfDaysOfUse, IsUsingConnectedMode = isConnected, IsUsingLegacyConnectedMode = isLegacyConnected, IsUsingSonarCloud = isSonarCloud, SystemDate = now, InstallDate = telemetryData.InstallationDate, Analyses = telemetryData.Analyses, ShowHotspot = telemetryData.ShowHotspot, TaintVulnerabilities = telemetryData.TaintVulnerabilities, ServerNotifications = isConnected ? telemetryData.ServerNotifications : null }); }