Show query results before structured evaluator log summary completes (#1350)

This commit is contained in:
Angela P Wen
2022-05-17 10:45:52 -04:00
committed by GitHub
parent 9367d5fb45
commit 619c485224
2 changed files with 29 additions and 13 deletions

View File

@@ -812,13 +812,16 @@ export class QueryHistoryManager extends DisposableObject {
} }
private warnNoEvalLog() { private warnNoEvalLog() {
void showAndLogWarningMessage('No evaluator log is available for this run. Perhaps it failed before evaluation, or you are running with a version of CodeQL before ' + CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG + '?'); void showAndLogWarningMessage(`No evaluator log is available for this run. Perhaps it failed before evaluation, or you are running with a version of CodeQL before ' + ${CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG}?`);
} }
private warnNoEvalLogSummary() { private warnNoEvalLogSummary() {
void showAndLogWarningMessage(`No evaluator log summary is available for this run. Perhaps it failed before evaluation, or you are running with a version of CodeQL before ${CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG}?`); void showAndLogWarningMessage(`Evaluator log summary and evaluator log are not available for this run. Perhaps they failed before evaluation, or you are running with a version of CodeQL before ${CliVersionConstraint.CLI_VERSION_WITH_PER_QUERY_EVAL_LOG}?`);
} }
private warnInProgressEvalLogSummary() {
void showAndLogWarningMessage('The evaluator log summary is still being generated. Please try again later. The summary generation process is tracked in the "CodeQL Extension Log" view.');
}
async handleShowEvalLog( async handleShowEvalLog(
singleItem: QueryHistoryInfo, singleItem: QueryHistoryInfo,
@@ -851,8 +854,15 @@ export class QueryHistoryManager extends DisposableObject {
if (finalSingleItem.evalLogSummaryLocation) { if (finalSingleItem.evalLogSummaryLocation) {
await this.tryOpenExternalFile(finalSingleItem.evalLogSummaryLocation); await this.tryOpenExternalFile(finalSingleItem.evalLogSummaryLocation);
} else { }
this.warnNoEvalLogSummary(); // Summary log file doesn't exist.
else {
if (finalSingleItem.evalLogLocation && fs.pathExists(finalSingleItem.evalLogLocation)) {
// If raw log does exist, then the summary log is still being generated.
this.warnInProgressEvalLogSummary();
} else {
this.warnNoEvalLogSummary();
}
} }
} }

View File

@@ -199,15 +199,21 @@ export class QueryEvaluationInfo {
}); });
if (await this.hasEvalLog()) { if (await this.hasEvalLog()) {
queryInfo.evalLogLocation = this.evalLogPath; queryInfo.evalLogLocation = this.evalLogPath;
await qs.cliServer.generateLogSummary(this.evalLogPath, this.evalLogSummaryPath, this.evalLogEndSummaryPath); void qs.cliServer.generateLogSummary(this.evalLogPath, this.evalLogSummaryPath, this.evalLogEndSummaryPath)
queryInfo.evalLogSummaryLocation = this.evalLogSummaryPath; .then(() => {
fs.readFile(this.evalLogEndSummaryPath, (err, buffer) => { queryInfo.evalLogSummaryLocation = this.evalLogSummaryPath;
if (err) { fs.readFile(this.evalLogEndSummaryPath, (err, buffer) => {
throw new Error(`Could not read structured evaluator log end of summary file at ${this.evalLogEndSummaryPath}.`); if (err) {
} throw new Error(`Could not read structured evaluator log end of summary file at ${this.evalLogEndSummaryPath}.`);
void qs.logger.log(' --- Evaluator Log Summary --- '); }
void qs.logger.log(buffer.toString()); void qs.logger.log(' --- Evaluator Log Summary --- ');
}); void qs.logger.log(buffer.toString());
});
})
.catch(err => {
void showAndLogWarningMessage(`Failed to generate structured evaluator log summary. Reason: ${err.message}`);
});
} else { } else {
void showAndLogWarningMessage(`Failed to write structured evaluator log to ${this.evalLogPath}.`); void showAndLogWarningMessage(`Failed to write structured evaluator log to ${this.evalLogPath}.`);
} }