Skip to content

Commit 5932bdb

Browse files
committed
Address review comments
- Tweak return types + logging - Update changelog
1 parent 1afe6b5 commit 5932bdb

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

extensions/ql-vscode/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## [UNRELEASED]
44

55
- Add a command _CodeQL: Run Query on Multiple Databases_, which lets users select multiple databases to run a query on. [#898](https://github.com/github/vscode-codeql/pull/898)
6+
- Autodetect what language a query targets. This refines the _CodeQL: Run Query on Multiple Databases_ command to only show relevant databases. [#915](https://github.com/github/vscode-codeql/pull/915)
67

78
## 1.5.2 - 13 July 2021
89

extensions/ql-vscode/src/extension.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -570,11 +570,15 @@ async function activateWithInstalledDistribution(
570570
token: CancellationToken,
571571
uri: Uri | undefined
572572
) => {
573+
let filteredDBs = dbm.databaseItems;
574+
// If possible, only show databases with the right language (otherwise show all databases).
573575
const queryLanguage = await findLanguage(cliServer, uri);
574-
const filteredDBs = dbm.databaseItems.filter(db => db.language === queryLanguage);
575-
if (filteredDBs.length === 0) {
576-
void helpers.showAndLogErrorMessage(`No databases found for language ${queryLanguage}`);
577-
return;
576+
if (queryLanguage) {
577+
filteredDBs = dbm.databaseItems.filter(db => db.language === queryLanguage);
578+
if (filteredDBs.length === 0) {
579+
void helpers.showAndLogErrorMessage(`No databases found for language ${queryLanguage}. Please add a suitable database to your workspace.`);
580+
return;
581+
}
578582
}
579583
const quickPickItems = filteredDBs.map<DatabaseQuickPickItem>(dbItem => (
580584
{
@@ -588,7 +592,7 @@ async function activateWithInstalledDistribution(
588592
*/
589593
const quickpick = await window.showQuickPick<DatabaseQuickPickItem>(
590594
quickPickItems,
591-
{ canPickMany: true }
595+
{ canPickMany: true, ignoreFocusOut: true }
592596
);
593597
if (quickpick !== undefined) {
594598
// Collect all skipped databases and display them at the end (instead of popping up individual errors)

extensions/ql-vscode/src/run-remote-query.ts

+10-4
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ const REPO = 'qc-controller';
2323
export async function findLanguage(
2424
cliServer: cli.CodeQLCliServer,
2525
queryUri: Uri | undefined
26-
): Promise<string> {
26+
): Promise<string | undefined> {
2727
const uri = queryUri || window.activeTextEditor?.document.uri;
2828
if (uri !== undefined) {
2929
try {
3030
const queryInfo = await cliServer.resolveQueryByLanguage(getOnDiskWorkspaceFolders(), uri);
31-
return (Object.keys(queryInfo.byLanguage))[0];
31+
const language = (Object.keys(queryInfo.byLanguage))[0];
32+
void logger.log(`Detected query language: ${language}`);
33+
return language;
3234
} catch (e) {
3335
void logger.log('Could not autodetect query language. Select language manually.');
3436
}
@@ -37,8 +39,8 @@ export async function findLanguage(
3739
const language = await window.showQuickPick(
3840
availableLanguages,
3941
{ placeHolder: 'Select target language for your query', ignoreFocusOut: true }
40-
) || '';
41-
if (language === '') {
42+
);
43+
if (!language) {
4244
// This only happens if the user cancels the quick pick.
4345
void showAndLogErrorMessage('Language not found. Language must be specified manually.');
4446
}
@@ -68,6 +70,10 @@ export async function runRemoteQuery(cliServer: cli.CodeQLCliServer, credentials
6870
const language = config.language || await findLanguage(cliServer, uri);
6971
const repositories = config.repositories;
7072

73+
if (!language) {
74+
return;
75+
}
76+
7177
try {
7278
await octokit.request(
7379
'POST /repos/:owner/:repo/code-scanning/codeql/queries',

0 commit comments

Comments
 (0)