提交 c7fe12ff 编写于 作者: R roblou

Log filter strings that produced no results

上级 be0abec3
...@@ -107,6 +107,8 @@ export class PreferencesEditor extends BaseEditor { ...@@ -107,6 +107,8 @@ export class PreferencesEditor extends BaseEditor {
private delayedFilterLogging: Delayer<void>; private delayedFilterLogging: Delayer<void>;
private disposablesByInput: IDisposable[] = []; private disposablesByInput: IDisposable[] = [];
private latestEmptyFilters: string[] = [];
constructor( constructor(
@IPreferencesService private preferencesService: IPreferencesService, @IPreferencesService private preferencesService: IPreferencesService,
@IEnvironmentService private environmentService: IEnvironmentService, @IEnvironmentService private environmentService: IEnvironmentService,
...@@ -194,12 +196,16 @@ export class PreferencesEditor extends BaseEditor { ...@@ -194,12 +196,16 @@ export class PreferencesEditor extends BaseEditor {
const defaultPreferencesRenderer = this.getDefaultPreferencesRenderer(); const defaultPreferencesRenderer = this.getDefaultPreferencesRenderer();
const editablePreferencesRender = this.getEditablePreferencesRenderer(); const editablePreferencesRender = this.getEditablePreferencesRenderer();
if (filter) { if (filter) {
this.delayedFilterLogging.trigger(() => this.reportFilteringUsed(filter));
const filterResult = defaultPreferencesRenderer.preferencesModel.filterSettings(filter); const filterResult = defaultPreferencesRenderer.preferencesModel.filterSettings(filter);
defaultPreferencesRenderer.filterPreferences(filterResult); defaultPreferencesRenderer.filterPreferences(filterResult);
editablePreferencesRender.filterPreferences(filterResult); editablePreferencesRender.filterPreferences(filterResult);
const count = this.getCount(filterResult.filteredGroups); const count = this.getCount(filterResult.filteredGroups);
this.searchWidget.showMessage(this.showSearchResultsMessage(count), count); this.searchWidget.showMessage(this.showSearchResultsMessage(count), count);
if (count === 0) {
this.latestEmptyFilters.push(filter);
}
this.delayedFilterLogging.trigger(() => this.reportFilteringUsed(filter));
} else { } else {
defaultPreferencesRenderer.filterPreferences(null); defaultPreferencesRenderer.filterPreferences(null);
editablePreferencesRender.filterPreferences(null); editablePreferencesRender.filterPreferences(null);
...@@ -247,11 +253,23 @@ export class PreferencesEditor extends BaseEditor { ...@@ -247,11 +253,23 @@ export class PreferencesEditor extends BaseEditor {
} }
private reportFilteringUsed(filter: string): void { private reportFilteringUsed(filter: string): void {
let data = {}; let data = {
data['filter'] = filter; filter,
emptyFilters: this.getLatestEmptyFiltersForTelemetry()
};
this.latestEmptyFilters = [];
this.telemetryService.publicLog('defaultSettings.filter', data); this.telemetryService.publicLog('defaultSettings.filter', data);
} }
/**
* Put a rough limit on the size of the telemetry data, since otherwise it could be an unbounded large amount
* of data. 8192 is the max size of a property value. This is rough since that probably includes ""s, etc.
*/
private getLatestEmptyFiltersForTelemetry(): string[] {
let cumulativeSize = 0;
return this.latestEmptyFilters.filter(filterText => (cumulativeSize += filterText.length) <= 8192);
}
private getCount(settingsGroups: ISettingsGroup[]): number { private getCount(settingsGroups: ISettingsGroup[]): number {
let count = 0; let count = 0;
for (const group of settingsGroups) { for (const group of settingsGroups) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册