mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
Git - add telemetry to track down stale diagnostics (#273565)
This commit is contained in:
@@ -682,10 +682,11 @@ class CommandErrorOutputTextDocumentContentProvider implements TextDocumentConte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function evaluateDiagnosticsCommitHook(repository: Repository, options: CommitOptions): Promise<boolean> {
|
async function evaluateDiagnosticsCommitHook(repository: Repository, options: CommitOptions, logger: LogOutputChannel): Promise<boolean> {
|
||||||
const config = workspace.getConfiguration('git', Uri.file(repository.root));
|
const config = workspace.getConfiguration('git', Uri.file(repository.root));
|
||||||
const enabled = config.get<boolean>('diagnosticsCommitHook.enabled', false) === true;
|
const enabled = config.get<boolean>('diagnosticsCommitHook.enabled', false) === true;
|
||||||
const sourceSeverity = config.get<Record<string, DiagnosticSeverityConfig>>('diagnosticsCommitHook.sources', { '*': 'error' });
|
const sourceSeverity = config.get<Record<string, DiagnosticSeverityConfig>>('diagnosticsCommitHook.sources', { '*': 'error' });
|
||||||
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Diagnostics Commit Hook: enabled=${enabled}, sources=${JSON.stringify(sourceSeverity)}`);
|
||||||
|
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
return true;
|
return true;
|
||||||
@@ -711,23 +712,27 @@ async function evaluateDiagnosticsCommitHook(repository: Repository, options: Co
|
|||||||
for (const resource of resources) {
|
for (const resource of resources) {
|
||||||
const unresolvedDiagnostics = languages.getDiagnostics(resource)
|
const unresolvedDiagnostics = languages.getDiagnostics(resource)
|
||||||
.filter(d => {
|
.filter(d => {
|
||||||
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Evaluating diagnostic for ${resource.fsPath}: source='${d.source}', severity='${d.severity}'`);
|
||||||
|
|
||||||
// No source or ignored source
|
// No source or ignored source
|
||||||
if (!d.source || (Object.keys(sourceSeverity).includes(d.source) && sourceSeverity[d.source] === 'none')) {
|
if (!d.source || (Object.keys(sourceSeverity).includes(d.source) && sourceSeverity[d.source] === 'none')) {
|
||||||
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Ignoring diagnostic for ${resource.fsPath}: source='${d.source}', severity='${d.severity}'`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Source severity
|
// Source severity
|
||||||
if (Object.keys(sourceSeverity).includes(d.source) &&
|
if (Object.keys(sourceSeverity).includes(d.source) && d.severity <= toDiagnosticSeverity(sourceSeverity[d.source])) {
|
||||||
d.severity <= toDiagnosticSeverity(sourceSeverity[d.source])) {
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Found unresolved diagnostic for ${resource.fsPath}: source='${d.source}', severity='${d.severity}'`);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wildcard severity
|
// Wildcard severity
|
||||||
if (Object.keys(sourceSeverity).includes('*') &&
|
if (Object.keys(sourceSeverity).includes('*') && d.severity <= toDiagnosticSeverity(sourceSeverity['*'])) {
|
||||||
d.severity <= toDiagnosticSeverity(sourceSeverity['*'])) {
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Found unresolved diagnostic for ${resource.fsPath}: source='${d.source}', severity='${d.severity}'`);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.trace(`[CommandCenter][evaluateDiagnosticsCommitHook] Ignoring diagnostic for ${resource.fsPath}: source='${d.source}', severity='${d.severity}'`);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2412,7 +2417,7 @@ export class CommandCenter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Diagnostics commit hook
|
// Diagnostics commit hook
|
||||||
const diagnosticsResult = await evaluateDiagnosticsCommitHook(repository, opts);
|
const diagnosticsResult = await evaluateDiagnosticsCommitHook(repository, opts, this.logger);
|
||||||
if (!diagnosticsResult) {
|
if (!diagnosticsResult) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user