Generate markdown summary file for raw results
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { createRemoteFileRef } from '../pure/location-link-utils';
|
||||
import { parseHighlightedLine, shouldHighlightLine } from '../pure/sarif-utils';
|
||||
import { getAnalysisResultCount, parseHighlightedLine, shouldHighlightLine } from '../pure/sarif-utils';
|
||||
import { RemoteQuery } from './remote-query';
|
||||
import { AnalysisAlert, AnalysisResults, CodeSnippet, FileLink, HighlightedRegion } from './shared/analysis-result';
|
||||
|
||||
@@ -14,14 +14,13 @@ export function generateMarkdown(query: RemoteQuery, analysesResults: AnalysisRe
|
||||
// Generate summary file with links to individual files
|
||||
const summaryLines: MarkdownFile = generateMarkdownSummary(query);
|
||||
for (const analysisResult of analysesResults) {
|
||||
if (analysisResult.interpretedResults.length === 0) {
|
||||
// TODO: We'll add support for non-interpreted results later.
|
||||
if (analysisResult.interpretedResults.length === 0 && !analysisResult.rawResults) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Append nwo and results count to the summary table
|
||||
const nwo = analysisResult.nwo;
|
||||
const resultsCount = analysisResult.interpretedResults.length;
|
||||
const resultsCount = getAnalysisResultCount(analysisResult);
|
||||
const link = createGistRelativeLink(nwo);
|
||||
summaryLines.push(`| ${nwo} | [${resultsCount} result(s)](${link}) |`);
|
||||
|
||||
@@ -34,6 +33,9 @@ export function generateMarkdown(query: RemoteQuery, analysesResults: AnalysisRe
|
||||
const individualResult = generateMarkdownForInterpretedResult(interpretedResult, query.language);
|
||||
lines.push(...individualResult);
|
||||
}
|
||||
if (analysisResult.rawResults) {
|
||||
// TODO: Generate markdown table for raw results
|
||||
}
|
||||
files.push(lines);
|
||||
}
|
||||
return [summaryLines, ...files];
|
||||
|
||||
@@ -61,6 +61,35 @@ describe('markdown generation', async function() {
|
||||
expect(markdownFile2.join('\n')).to.equal(expectedTestOutput2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('for non-alert query', async function() {
|
||||
it('should generate markdown file for each repo with results', async function() {
|
||||
const query = JSON.parse(
|
||||
await fs.readFile(path.join(__dirname, 'data/raw-results/query.json'), 'utf8')
|
||||
);
|
||||
const analysesResults = JSON.parse(
|
||||
await fs.readFile(path.join(__dirname, 'data/raw-results/analyses-results.json'), 'utf8')
|
||||
);
|
||||
|
||||
const markdownFiles = generateMarkdown(query, analysesResults);
|
||||
|
||||
// Check that query has results for two repositories, plus a summary file
|
||||
expect(markdownFiles.length).to.equal(3);
|
||||
|
||||
const markdownFile0 = markdownFiles[0]; // summary file
|
||||
const markdownFile1 = markdownFiles[1]; // results for github/codeql repo
|
||||
const markdownFile2 = markdownFiles[2]; // results for meteor/meteor repo
|
||||
|
||||
const expectedSummaryFile = await readTestOutputFile('data/raw-results/summary.md');
|
||||
const expectedTestOutput1 = await readTestOutputFile('data/raw-results/results-repo1.md');
|
||||
const expectedTestOutput2 = await readTestOutputFile('data/raw-results/results-repo2.md');
|
||||
|
||||
// Check that markdown output is correct, after making line endings consistent
|
||||
expect(markdownFile0.join('\n')).to.equal(expectedSummaryFile);
|
||||
expect(markdownFile1.join('\n')).to.equal(expectedTestOutput1);
|
||||
expect(markdownFile2.join('\n')).to.equal(expectedTestOutput2);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user