Git - add telemetry to track down stale diagnostics (#273565)

This commit is contained in:
Ladislau Szomoru
2025-10-27 15:42:35 +01:00
committed by GitHub
parent ab2cef5ab1
commit 24dc95ef64

View File

@@ -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;
} }