Skip to content

Commit

Permalink
Showing 4 changed files with 45 additions and 23 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/integration-testing.yml
@@ -23,7 +23,9 @@ jobs:
TEST_MODE: true
- run: |
cd "$CODEQL_ACTION_DATABASE_DIR"
if [ "$(ls | wc -l)" != 6 ] || \
# List all directories as there will be precisely one directory per database
# but there may be other files in this directory such as query suites.
if [ "$(ls -d */ | wc -l)" != 6 ] || \
[[ ! -d cpp ]] || \
[[ ! -d csharp ]] || \
[[ ! -d go ]] || \
30 changes: 20 additions & 10 deletions lib/finalize-db.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/finalize-db.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 21 additions & 11 deletions src/finalize-db.ts
@@ -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 + '"');

0 comments on commit f18fffb

Please sign in to comment.