mirror of
https://github.com/github/codeql-action.git
synced 2026-01-04 21:50:17 +08:00
pass queries to codeql via a file
This commit is contained in:
@@ -108,14 +108,12 @@ async function runResolveQueries(codeqlCmd: string, queries: string[]): Promise<
|
||||
async function resolveQueryLanguages(codeqlCmd: string, config: configUtils.Config): Promise<Map<string, string[]>> {
|
||||
let res = new Map();
|
||||
|
||||
const languages = await util.getLanguages();
|
||||
for (const language of languages) {
|
||||
res[language] = [];
|
||||
}
|
||||
|
||||
if (config.additionalSuites.length !== 0) {
|
||||
if (!config.disableDefaultQueries || config.additionalSuites.length !== 0) {
|
||||
const suites: string[] = [];
|
||||
for (const language of await util.getLanguages()) {
|
||||
if (!config.disableDefaultQueries) {
|
||||
suites.push(language + '-code-scanning.qls');
|
||||
}
|
||||
for (const additionalSuite of config.additionalSuites) {
|
||||
suites.push(language + '-' + additionalSuite + '.qls');
|
||||
}
|
||||
@@ -124,6 +122,9 @@ async function resolveQueryLanguages(codeqlCmd: string, config: configUtils.Conf
|
||||
const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, suites);
|
||||
|
||||
for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) {
|
||||
if (res[language] === undefined) {
|
||||
res[language] = [];
|
||||
}
|
||||
res[language].push(...Object.keys(<any>queries));
|
||||
}
|
||||
}
|
||||
@@ -132,6 +133,9 @@ async function resolveQueryLanguages(codeqlCmd: string, config: configUtils.Conf
|
||||
const resolveQueriesOutputObject = await runResolveQueries(codeqlCmd, config.additionalQueries);
|
||||
|
||||
for (const [language, queries] of Object.entries(resolveQueriesOutputObject.byLanguage)) {
|
||||
if (res[language] === undefined) {
|
||||
res[language] = [];
|
||||
}
|
||||
res[language].push(...Object.keys(<any>queries));
|
||||
}
|
||||
|
||||
@@ -158,11 +162,17 @@ async function runQueries(codeqlCmd: string, databaseFolder: string, sarifFolder
|
||||
for (let database of fs.readdirSync(databaseFolder)) {
|
||||
core.startGroup('Analyzing ' + database);
|
||||
|
||||
const queries: string[] = [];
|
||||
if (!config.disableDefaultQueries) {
|
||||
queries.push(database + '-code-scanning.qls');
|
||||
const queries = queriesPerLanguage[database] || [];
|
||||
if (queries.length === 0) {
|
||||
throw new Error('Unable to analyse ' + database + ' as no queries were selected for this language');
|
||||
}
|
||||
queries.push(...(queriesPerLanguage[database] || []));
|
||||
|
||||
// Pass the queries to codeql using a file instead of using the command
|
||||
// line to avoid command line length restrictions, particularly on windows.
|
||||
const querySuite = path.join(databaseFolder, database + '-queries.qls');
|
||||
const querySuiteContents = queries.map(q => '- query: ' + q).join('\n');
|
||||
fs.writeFileSync(querySuite, querySuiteContents);
|
||||
core.debug('Query suite file for ' + database + '...\n' + querySuiteContents);
|
||||
|
||||
const sarifFile = path.join(sarifFolder, database + '.sarif');
|
||||
|
||||
@@ -174,7 +184,7 @@ async function runQueries(codeqlCmd: string, databaseFolder: string, sarifFolder
|
||||
'--format=sarif-latest',
|
||||
'--output=' + sarifFile,
|
||||
'--no-sarif-add-snippets',
|
||||
...queries
|
||||
querySuite
|
||||
]);
|
||||
|
||||
core.debug('SARIF results for database ' + database + ' created at "' + sarifFile + '"');
|
||||
|
||||
Reference in New Issue
Block a user