Skip to content

Commit ffcc1f8

Browse files
committed
Generate markdown summary file for raw results
1 parent 04d7b12 commit ffcc1f8

2 files changed

Lines changed: 35 additions & 4 deletions

File tree

extensions/ql-vscode/src/remote-queries/remote-queries-markdown-generation.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createRemoteFileRef } from '../pure/location-link-utils';
2-
import { parseHighlightedLine, shouldHighlightLine } from '../pure/sarif-utils';
2+
import { getAnalysisResultCount, parseHighlightedLine, shouldHighlightLine } from '../pure/sarif-utils';
33
import { RemoteQuery } from './remote-query';
44
import { AnalysisAlert, AnalysisResults, CodeSnippet, FileLink, HighlightedRegion } from './shared/analysis-result';
55

@@ -14,14 +14,13 @@ export function generateMarkdown(query: RemoteQuery, analysesResults: AnalysisRe
1414
// Generate summary file with links to individual files
1515
const summaryLines: MarkdownFile = generateMarkdownSummary(query);
1616
for (const analysisResult of analysesResults) {
17-
if (analysisResult.interpretedResults.length === 0) {
18-
// TODO: We'll add support for non-interpreted results later.
17+
if (analysisResult.interpretedResults.length === 0 && !analysisResult.rawResults) {
1918
continue;
2019
}
2120

2221
// Append nwo and results count to the summary table
2322
const nwo = analysisResult.nwo;
24-
const resultsCount = analysisResult.interpretedResults.length;
23+
const resultsCount = getAnalysisResultCount(analysisResult);
2524
const link = createGistRelativeLink(nwo);
2625
summaryLines.push(`| ${nwo} | [${resultsCount} result(s)](${link}) |`);
2726

@@ -34,6 +33,9 @@ export function generateMarkdown(query: RemoteQuery, analysesResults: AnalysisRe
3433
const individualResult = generateMarkdownForInterpretedResult(interpretedResult, query.language);
3534
lines.push(...individualResult);
3635
}
36+
if (analysisResult.rawResults) {
37+
// TODO: Generate markdown table for raw results
38+
}
3739
files.push(lines);
3840
}
3941
return [summaryLines, ...files];

extensions/ql-vscode/test/pure-tests/remote-queries/markdown-generation/markdown-generation.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,35 @@ describe('markdown generation', async function() {
6161
expect(markdownFile2.join('\n')).to.equal(expectedTestOutput2);
6262
});
6363
});
64+
65+
describe('for non-alert query', async function() {
66+
it('should generate markdown file for each repo with results', async function() {
67+
const query = JSON.parse(
68+
await fs.readFile(path.join(__dirname, 'data/raw-results/query.json'), 'utf8')
69+
);
70+
const analysesResults = JSON.parse(
71+
await fs.readFile(path.join(__dirname, 'data/raw-results/analyses-results.json'), 'utf8')
72+
);
73+
74+
const markdownFiles = generateMarkdown(query, analysesResults);
75+
76+
// Check that query has results for two repositories, plus a summary file
77+
expect(markdownFiles.length).to.equal(3);
78+
79+
const markdownFile0 = markdownFiles[0]; // summary file
80+
const markdownFile1 = markdownFiles[1]; // results for github/codeql repo
81+
const markdownFile2 = markdownFiles[2]; // results for meteor/meteor repo
82+
83+
const expectedSummaryFile = await readTestOutputFile('data/raw-results/summary.md');
84+
const expectedTestOutput1 = await readTestOutputFile('data/raw-results/results-repo1.md');
85+
const expectedTestOutput2 = await readTestOutputFile('data/raw-results/results-repo2.md');
86+
87+
// Check that markdown output is correct, after making line endings consistent
88+
expect(markdownFile0.join('\n')).to.equal(expectedSummaryFile);
89+
expect(markdownFile1.join('\n')).to.equal(expectedTestOutput1);
90+
expect(markdownFile2.join('\n')).to.equal(expectedTestOutput2);
91+
});
92+
});
6493
});
6594

6695
/**

0 commit comments

Comments
 (0)