public TelemetryManager(Path path, TelemetryClient client, Supplier<Boolean> usesConnectedModeSupplier, Supplier<Boolean> usesSonarCloudSupplier) { this.storage = newTelemetryStorage(path); this.usesConnectedModeSupplier = usesConnectedModeSupplier; this.usesSonarCloudSupplier = usesSonarCloudSupplier; this.data = storage.tryLoad(); this.client = client; }
public void enable() { tryMerge(); data.setEnabled(true); saveNow(); uploadLazily(); }
/** * Save and upload lazily telemetry data. */ public void stop() { saveNow(); uploadLazily(); }
private TelemetryPayload createPayload(TelemetryData data, boolean usesConnectedMode, boolean usesSonarCloud) { OffsetDateTime systemTime = OffsetDateTime.now(); long daysSinceInstallation = data.installTime().until(systemTime, ChronoUnit.DAYS); TelemetryAnalyzerPerformancePayload[] analyzers = TelemetryUtils.toPayload(data.analyzers()); return new TelemetryPayload(daysSinceInstallation, data.numUseDays(), product, version, usesConnectedMode, usesSonarCloud, systemTime, data.installTime(), analyzers); }
/** * Disable telemetry (opt-out). */ public void disable() { tryMerge(); data.setEnabled(false); saveNow(); client.optOut(data, usesConnectedModeSupplier.get(), usesSonarCloudSupplier.get()); }
public TelemetryManager get() { TelemetryClientConfig clientConfig = getTelemetryClientConfig(); TelemetryClient client = new TelemetryClient(clientConfig, PRODUCT, application.getVersion()); return new TelemetryManager(getStorageFilePath(), client, this::isAnyProjectConnected, this::isAnyProjectConnectedToSonarCloud); }
@Override public boolean enabled() { return telemetry != null && telemetry.isEnabled(); }
public void analysisDoneOnSingleFile(@Nullable String fileExtension, int analysisTimeMs) { String language = TelemetryUtils.getLanguage(fileExtension); data.setUsedAnalysis(language, analysisTimeMs); mergeAndSave(); }
/** * Register the analysis of a single file, with information regarding language and duration of the analysis. */ void setUsedAnalysis(String language, int analysisTimeMs) { setUsedAnalysis(); TelemetryAnalyzerPerformance analyzer = analyzers.computeIfAbsent(language, x -> new TelemetryAnalyzerPerformance()); analyzer.registerAnalysis(analysisTimeMs); }
public void analysisDoneOnMultipleFiles() { data.setUsedAnalysis(); mergeAndSave(); }
public TelemetryManager newTelemetryManager(Path path, TelemetryClient client) { return new TelemetryManager(path, client, SonarLintTelemetry::isAnyProjectConnected, SonarLintTelemetry::isAnyServerSonarCloud); }
private void saveNow() { storage.trySave(data); } }
TelemetryStorage newTelemetryStorage(Path path) { return new TelemetryStorage(path); }
public boolean isEnabled() { return data.enabled(); }
public boolean enabled() { return telemetry != null && telemetry.isEnabled(); }
public void analysisDoneOnSingleLanguage(@Nullable String language, int analysisTimeMs) { if (language == null) { data.setUsedAnalysis("others", analysisTimeMs); } else { data.setUsedAnalysis(language, analysisTimeMs); } mergeAndSave(); }