Skip to content

Commit c17caba

Browse files
committed
Add additional-packs to fix library path resolution
1 parent 5a5f990 commit c17caba

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

extensions/ql-vscode/src/cli.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -486,17 +486,23 @@ export class CodeQLCliServer implements Disposable {
486486
* Finds the language that a query is analyzing.
487487
* @param queryUri The URI of the query
488488
*/
489-
490-
// Note: this currently fails for some queries, e.g. the "example" snippets..."
491-
async findLanguage(queryUri?: Uri): Promise<string> {
489+
async findLanguage(workspaces: string[], queryUri?: Uri): Promise<string> {
492490
let language = '';
493491
if (queryUri) {
492+
const subcommandArgs = [
493+
'--format', 'bylanguage',
494+
queryUri.fsPath,
495+
'--additional-packs',
496+
workspaces.join(path.delimiter)
497+
];
494498
try {
495-
const JSONResults = await this.runCodeQlCliCommand(['resolve', 'queries'], ['--format', 'bylanguage', queryUri.fsPath], 'Finding query language');
499+
const JSONResults = await this.runCodeQlCliCommand(['resolve', 'queries'], subcommandArgs, 'Finding query language');
496500

501+
// This corresponds to `codeql resolve queries <query> --format bylanguage | jq -r '.byLanguage | keys[]'`
497502
language = Object.keys(JSON.parse(JSONResults).byLanguage)[0];
498503
}
499504
catch (e) {
505+
// Add an option to manually specify the language, in case automatic language detection fails.
500506
void this.logger.log('Failed to detect language. Using manual prompt instead.');
501507
language = await window.showQuickPick(
502508
['cpp', 'csharp', 'go', 'java', 'javascript', 'python'], { placeHolder: 'Select language' }

extensions/ql-vscode/src/extension.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,11 +559,13 @@ async function activateWithInstalledDistribution(
559559
}
560560
)
561561
);
562+
// TODO: Remove this. (Temporary command to test `cliServer.findLanguage`)
562563
ctx.subscriptions.push(
563564
commandRunner('codeQL.findLanguage', async (
564565
uri: Uri | undefined
565566
) => {
566-
const language = await cliServer.findLanguage(uri || window.activeTextEditor?.document.uri);
567+
const diskWorkspaceFolders = helpers.getOnDiskWorkspaceFolders();
568+
const language = await cliServer.findLanguage(diskWorkspaceFolders, uri || window.activeTextEditor?.document.uri);
567569
void helpers.showAndLogInformationMessage(language);
568570
})
569571
);

0 commit comments

Comments
 (0)