Skip to content

Commit 61f4ce2

Browse files
Merge pull request #2074 from github/elena/refactor-query-language
Consolidate the way we define query languages
2 parents 1ab3496 + c2f7d38 commit 61f4ce2

File tree

19 files changed

+97
-96
lines changed

19 files changed

+97
-96
lines changed

extensions/ql-vscode/src/cli.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import { QueryMetadata, SortDirection } from "./pure/interface-types";
2626
import { Logger, ProgressReporter } from "./common";
2727
import { CompilationMessage } from "./pure/legacy-messages";
2828
import { sarifParser } from "./sarif-parser";
29-
import { dbSchemeToLanguage, walkDirectory } from "./helpers";
29+
import { walkDirectory } from "./helpers";
3030
import { App } from "./common/app";
31-
import { QueryLanguage } from "./qlpack-generator";
31+
import { QueryLanguage } from "./common/query-language";
3232

3333
/**
3434
* The version of the SARIF format that we are using.
@@ -1179,9 +1179,11 @@ export class CodeQLCliServer implements Disposable {
11791179
*/
11801180
public async getSupportedLanguages(): Promise<string[]> {
11811181
if (!this._supportedLanguages) {
1182-
// Get the intersection of resolveLanguages with the list of hardcoded languages in dbSchemeToLanguage.
1182+
// Get the intersection of resolveLanguages with the list of languages in QueryLanguage.
11831183
const resolvedLanguages = Object.keys(await this.resolveLanguages());
1184-
const hardcodedLanguages = Object.values(dbSchemeToLanguage);
1184+
const hardcodedLanguages = Object.values(QueryLanguage).map((s) =>
1185+
s.toString(),
1186+
);
11851187

11861188
this._supportedLanguages = resolvedLanguages.filter((lang) =>
11871189
hardcodedLanguages.includes(lang),
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
export enum QueryLanguage {
2+
CSharp = "csharp",
3+
Cpp = "cpp",
4+
Go = "go",
5+
Java = "java",
6+
Javascript = "javascript",
7+
Python = "python",
8+
Ruby = "ruby",
9+
Swift = "swift",
10+
}
11+
12+
export const PACKS_BY_QUERY_LANGUAGE = {
13+
[QueryLanguage.Cpp]: ["codeql/cpp-queries"],
14+
[QueryLanguage.CSharp]: [
15+
"codeql/csharp-queries",
16+
"codeql/csharp-solorigate-queries",
17+
],
18+
[QueryLanguage.Go]: ["codeql/go-queries"],
19+
[QueryLanguage.Java]: ["codeql/java-queries"],
20+
[QueryLanguage.Javascript]: [
21+
"codeql/javascript-queries",
22+
"codeql/javascript-experimental-atm-queries",
23+
],
24+
[QueryLanguage.Python]: ["codeql/python-queries"],
25+
[QueryLanguage.Ruby]: ["codeql/ruby-queries"],
26+
};
27+
28+
export const dbSchemeToLanguage = {
29+
"semmlecode.javascript.dbscheme": "javascript",
30+
"semmlecode.cpp.dbscheme": "cpp",
31+
"semmlecode.dbscheme": "java",
32+
"semmlecode.python.dbscheme": "python",
33+
"semmlecode.csharp.dbscheme": "csharp",
34+
"go.dbscheme": "go",
35+
"ruby.dbscheme": "ruby",
36+
"swift.dbscheme": "swift",
37+
};

extensions/ql-vscode/src/helpers.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { QueryMetadata } from "./pure/interface-types";
2424
import { telemetryListener } from "./telemetry";
2525
import { RedactableError } from "./pure/errors";
2626
import { getQlPackPath } from "./pure/ql";
27+
import { dbSchemeToLanguage } from "./common/query-language";
2728

2829
// Shared temporary folder for the extension.
2930
export const tmpDir = dirSync({
@@ -568,16 +569,6 @@ export class CachedOperation<U> {
568569
*
569570
* @see cli.CodeQLCliServer.resolveDatabase
570571
*/
571-
export const dbSchemeToLanguage = {
572-
"semmlecode.javascript.dbscheme": "javascript",
573-
"semmlecode.cpp.dbscheme": "cpp",
574-
"semmlecode.dbscheme": "java",
575-
"semmlecode.python.dbscheme": "python",
576-
"semmlecode.csharp.dbscheme": "csharp",
577-
"go.dbscheme": "go",
578-
"ruby.dbscheme": "ruby",
579-
"swift.dbscheme": "swift",
580-
};
581572

582573
export const languageToDbScheme = Object.entries(dbSchemeToLanguage).reduce(
583574
(acc, [k, v]) => {

extensions/ql-vscode/src/local-databases.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ import { QueryRunner } from "./queryRunner";
2626
import { pathsEqual } from "./pure/files";
2727
import { redactableError } from "./pure/errors";
2828
import { isCodespacesTemplate } from "./config";
29-
import { QlPackGenerator, QueryLanguage } from "./qlpack-generator";
29+
import { QlPackGenerator } from "./qlpack-generator";
30+
import { QueryLanguage } from "./common/query-language";
3031

3132
/**
3233
* databases.ts

extensions/ql-vscode/src/packaging.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,7 @@ import { ProgressCallback, UserCancellationException } from "./commandRunner";
99
import { extLogger } from "./common";
1010
import { asError, getErrorStack } from "./pure/helpers-pure";
1111
import { redactableError } from "./pure/errors";
12-
13-
const QUERY_PACKS = [
14-
"codeql/cpp-queries",
15-
"codeql/csharp-queries",
16-
"codeql/go-queries",
17-
"codeql/java-queries",
18-
"codeql/javascript-queries",
19-
"codeql/python-queries",
20-
"codeql/ruby-queries",
21-
"codeql/csharp-solorigate-queries",
22-
"codeql/javascript-experimental-atm-queries",
23-
];
12+
import { PACKS_BY_QUERY_LANGUAGE } from "./common/query-language";
2413

2514
/**
2615
* Prompts user to choose packs to download, and downloads them.
@@ -45,7 +34,7 @@ export async function handleDownloadPacks(
4534
{ ignoreFocusOut: true },
4635
);
4736
if (quickpick === queryPackOption) {
48-
packsToDownload = QUERY_PACKS;
37+
packsToDownload = Object.values(PACKS_BY_QUERY_LANGUAGE).flat();
4938
} else if (quickpick === customPackOption) {
5039
const customPack = await window.showInputBox({
5140
prompt:

extensions/ql-vscode/src/qlpack-generator.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,7 @@ import { dump } from "js-yaml";
33
import { join } from "path";
44
import { Uri, workspace } from "vscode";
55
import { CodeQLCliServer } from "./cli";
6-
7-
export type QueryLanguage =
8-
| "csharp"
9-
| "cpp"
10-
| "go"
11-
| "java"
12-
| "javascript"
13-
| "python"
14-
| "ruby"
15-
| "swift";
6+
import { QueryLanguage } from "./common/query-language";
167

178
export class QlPackGenerator {
189
private readonly qlpackName: string;

extensions/ql-vscode/src/variant-analysis/gh-api/variant-analysis.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
1+
import { QueryLanguage } from "../../common/query-language";
12
import { Repository, RepositoryWithMetadata } from "./repository";
23

34
export interface VariantAnalysisSubmissionRequest {
45
action_repo_ref: string;
5-
language: VariantAnalysisQueryLanguage;
6+
language: QueryLanguage;
67
query_pack: string;
78
repositories?: string[];
89
repository_lists?: string[];
910
repository_owners?: string[];
1011
}
1112

12-
export type VariantAnalysisQueryLanguage =
13-
| "csharp"
14-
| "cpp"
15-
| "go"
16-
| "java"
17-
| "javascript"
18-
| "python"
19-
| "ruby"
20-
| "swift";
21-
2213
export interface VariantAnalysis {
2314
id: number;
2415
controller_repo: Repository;
25-
query_language: VariantAnalysisQueryLanguage;
16+
query_language: QueryLanguage;
2617
query_pack_url: string;
2718
created_at: string;
2819
updated_at: string;

extensions/ql-vscode/src/variant-analysis/shared/variant-analysis.ts

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { Repository, RepositoryWithMetadata } from "./repository";
22
import { AnalysisAlert, AnalysisRawResults } from "./analysis-result";
3+
import { QueryLanguage } from "../../common/query-language";
34

45
export interface VariantAnalysis {
56
id: number;
67
controllerRepo: Repository;
78
query: {
89
name: string;
910
filePath: string;
10-
language: VariantAnalysisQueryLanguage;
11+
language: QueryLanguage;
1112
text: string;
1213
};
1314
databases: {
@@ -26,23 +27,10 @@ export interface VariantAnalysis {
2627
skippedRepos?: VariantAnalysisSkippedRepositories;
2728
}
2829

29-
export enum VariantAnalysisQueryLanguage {
30-
CSharp = "csharp",
31-
Cpp = "cpp",
32-
Go = "go",
33-
Java = "java",
34-
Javascript = "javascript",
35-
Python = "python",
36-
Ruby = "ruby",
37-
Swift = "swift",
38-
}
39-
4030
export function parseVariantAnalysisQueryLanguage(
4131
language: string,
42-
): VariantAnalysisQueryLanguage | undefined {
43-
return Object.values(VariantAnalysisQueryLanguage).find(
44-
(x) => x === language,
45-
);
32+
): QueryLanguage | undefined {
33+
return Object.values(QueryLanguage).find((x) => x === language);
4634
}
4735

4836
export enum VariantAnalysisStatus {
@@ -148,7 +136,7 @@ export interface VariantAnalysisSubmission {
148136
query: {
149137
name: string;
150138
filePath: string;
151-
language: VariantAnalysisQueryLanguage;
139+
language: QueryLanguage;
152140
text: string;
153141

154142
// Base64 encoded query pack.

extensions/ql-vscode/test/factories/variant-analysis/gh-api/variant-analysis-api-response.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
VariantAnalysisSkippedRepositories,
66
VariantAnalysisStatus,
77
} from "../../../../src/variant-analysis/gh-api/variant-analysis";
8-
import { VariantAnalysisQueryLanguage } from "../../../../src/variant-analysis/shared/variant-analysis";
8+
import { QueryLanguage } from "../../../../src/common/query-language";
99
import { createMockScannedRepos } from "./scanned-repositories";
1010
import { createMockSkippedRepos } from "./skipped-repositories";
1111
import { createMockRepository } from "./repository";
@@ -23,7 +23,7 @@ export function createMockApiResponse(
2323
full_name: "github/pickles",
2424
private: false,
2525
},
26-
query_language: VariantAnalysisQueryLanguage.Javascript,
26+
query_language: QueryLanguage.Javascript,
2727
query_pack_url: "https://example.com/foo",
2828
created_at: faker.date.recent().toISOString(),
2929
updated_at: faker.date.recent().toISOString(),

extensions/ql-vscode/test/factories/variant-analysis/shared/variant-analysis-submission.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { faker } from "@faker-js/faker";
2-
import {
3-
VariantAnalysisQueryLanguage,
4-
VariantAnalysisSubmission,
5-
} from "../../../../src/variant-analysis/shared/variant-analysis";
2+
import { VariantAnalysisSubmission } from "../../../../src/variant-analysis/shared/variant-analysis";
3+
import { QueryLanguage } from "../../../../src/common/query-language";
64

75
export function createMockSubmission(): VariantAnalysisSubmission {
86
return {
@@ -12,7 +10,7 @@ export function createMockSubmission(): VariantAnalysisSubmission {
1210
query: {
1311
name: "query-name",
1412
filePath: "query-file-path",
15-
language: VariantAnalysisQueryLanguage.Javascript,
13+
language: QueryLanguage.Javascript,
1614
text: "query-text",
1715
pack: "base64-encoded-string",
1816
},

0 commit comments

Comments
 (0)