Skip to content

Commit df2e22b

Browse files
committed
Merge remote-tracking branch 'origin/main' into koesie10/data-extension-editor-yaml-load
2 parents 3945f64 + d60bcf3 commit df2e22b

File tree

11 files changed

+70
-62
lines changed

11 files changed

+70
-62
lines changed

.github/workflows/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ jobs:
100100
run: |
101101
npm run lint
102102
103+
- name: Lint Markdown
104+
working-directory: extensions/ql-vscode
105+
run: |
106+
npm run lint:markdown
107+
103108
- name: Lint scenarios
104109
working-directory: extensions/ql-vscode
105110
run: |

extensions/ql-vscode/package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-view.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
9090
}
9191

9292
protected async saveYaml(yaml: string): Promise<void> {
93-
const modelFilename = this.modelFileName;
93+
const modelFilename = this.calculateModelFilename();
9494
if (!modelFilename) {
9595
return;
9696
}
@@ -101,7 +101,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
101101
}
102102

103103
protected async loadExistingModeledMethods(): Promise<void> {
104-
const modelFilename = this.modelFileName;
104+
const modelFilename = this.calculateModelFilename();
105105
if (!modelFilename) {
106106
return;
107107
}
@@ -269,7 +269,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
269269
});
270270
}
271271

272-
private get modelFileName(): string | undefined {
272+
private calculateModelFilename(): string | undefined {
273273
const workspaceFolder = workspace.workspaceFolders?.find(
274274
(folder) => folder.name === "ql",
275275
);

extensions/ql-vscode/src/variant-analysis/markdown-generation.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ export function generateVariantAnalysisMarkdownSummary(
112112
lines.push(`### Results for "${query.name}"`, "");
113113

114114
// Expandable section containing query text
115-
const queryCodeBlock = ["```ql", ...query.text.split("\n"), "```"];
115+
const queryCodeBlock = ["```ql", ...query.text.split("\n"), "```", ""];
116116
lines.push(...buildExpandableMarkdownSection("Query", queryCodeBlock));
117117

118118
// Padding between sections
@@ -128,6 +128,9 @@ export function generateVariantAnalysisMarkdownSummary(
128128
lines.push(`| ${fullName} | [${summary.resultCount} result(s)](${link}) |`);
129129
}
130130

131+
// Add a trailing newline
132+
lines.push("");
133+
131134
return {
132135
fileName: "_summary",
133136
content: lines,
@@ -279,8 +282,8 @@ function generateMarkdownForPathResults(
279282
);
280283
// Indent the snippet to fit with the numbered list.
281284
// The indentation is "n + 2" where the list number is an n-digit number.
282-
const codeSnippetIndented = codeSnippet.map(
283-
(line) => " ".repeat(listNumber.toString().length + 2) + line,
285+
const codeSnippetIndented = codeSnippet.map((line) =>
286+
(" ".repeat(listNumber.toString().length + 2) + line).trimEnd(),
284287
);
285288
pathLines.push(`${listNumber}. ${link}`, ...codeSnippetIndented);
286289
}
@@ -382,7 +385,6 @@ function buildExpandableMarkdownSection(
382385
`<summary>${title}</summary>`,
383386
"",
384387
...contents,
385-
"",
386388
"</details>",
387389
"",
388390
);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "../../../../../../.markdownlint.json",
3+
"MD010": false, // Hard tabs are from the original snippet in the SARIF file
4+
"MD024": false, // Duplicate headings
5+
"MD033": false, // Inline HTML for <details> and <summary>
6+
"MD051": false // Link fragments are used in Gist to link to other files
7+
}

extensions/ql-vscode/test/unit-tests/data/markdown-generation/interpreted-results/path-problem/expected/result-1-github-codeql.md

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,38 +22,37 @@
2222
cp.execSync(cmd); // BAD
2323
}
2424
</code></pre>
25-
25+
2626
2. [javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js#L4-L4)
2727
<pre><code class="javascript"> path = require("path");
2828
function cleanupTemp() {
2929
let cmd = "rm -rf " + <strong>path.join(__dirname, "temp")</strong>;
3030
cp.execSync(cmd); // BAD
3131
}
3232
</code></pre>
33-
33+
3434
3. [javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js#L4-L4)
3535
<pre><code class="javascript"> path = require("path");
3636
function cleanupTemp() {
3737
let cmd = <strong>"rm -rf " + path.join(__dirname, "temp")</strong>;
3838
cp.execSync(cmd); // BAD
3939
}
4040
</code></pre>
41-
41+
4242
4. [javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js#L4-L4)
4343
<pre><code class="javascript"> path = require("path");
4444
function cleanupTemp() {
4545
let <strong>cmd = "rm -rf " + path.join(__dirname, "temp")</strong>;
4646
cp.execSync(cmd); // BAD
4747
}
4848
</code></pre>
49-
49+
5050
5. [javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/src/Security/CWE-078/examples/shell-command-injection-from-environment.js#L5-L5)
5151
<pre><code class="javascript">function cleanupTemp() {
5252
let cmd = "rm -rf " + path.join(__dirname, "temp");
5353
cp.execSync(<strong>cmd</strong>); // BAD
5454
}
5555
</code></pre>
56-
5756

5857
</details>
5958

@@ -79,26 +78,25 @@
7978
<pre><code class="javascript">(function() {
8079
cp.execFileSync('rm', ['-rf', path.join(__dirname, "temp")]); // GOOD
8180
cp.execSync('rm -rf ' + path.join(<strong>__dirname</strong>, "temp")); // BAD
82-
81+
8382
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
8483
</code></pre>
85-
84+
8685
2. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L6-L6)
8786
<pre><code class="javascript">(function() {
8887
cp.execFileSync('rm', ['-rf', path.join(__dirname, "temp")]); // GOOD
8988
cp.execSync('rm -rf ' + <strong>path.join(__dirname, "temp")</strong>); // BAD
90-
89+
9190
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
9291
</code></pre>
93-
92+
9493
3. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L6-L6)
9594
<pre><code class="javascript">(function() {
9695
cp.execFileSync('rm', ['-rf', path.join(__dirname, "temp")]); // GOOD
9796
cp.execSync(<strong>'rm -rf ' + path.join(__dirname, "temp")</strong>); // BAD
98-
97+
9998
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
10099
</code></pre>
101-
102100

103101
</details>
104102

@@ -122,28 +120,27 @@
122120

123121
1. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L8-L8)
124122
<pre><code class="javascript"> cp.execSync('rm -rf ' + path.join(__dirname, "temp")); // BAD
125-
123+
126124
execa.shell('rm -rf ' + path.join(<strong>__dirname</strong>, "temp")); // NOT OK
127125
execa.shellSync('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
128-
126+
129127
</code></pre>
130-
128+
131129
2. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L8-L8)
132130
<pre><code class="javascript"> cp.execSync('rm -rf ' + path.join(__dirname, "temp")); // BAD
133-
131+
134132
execa.shell('rm -rf ' + <strong>path.join(__dirname, "temp")</strong>); // NOT OK
135133
execa.shellSync('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
136-
134+
137135
</code></pre>
138-
136+
139137
3. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L8-L8)
140138
<pre><code class="javascript"> cp.execSync('rm -rf ' + path.join(__dirname, "temp")); // BAD
141-
139+
142140
execa.shell(<strong>'rm -rf ' + path.join(__dirname, "temp")</strong>); // NOT OK
143141
execa.shellSync('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
144-
142+
145143
</code></pre>
146-
147144

148145
</details>
149146

@@ -169,26 +166,25 @@
169166
<pre><code class="javascript">
170167
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
171168
execa.shellSync('rm -rf ' + path.join(<strong>__dirname</strong>, "temp")); // NOT OK
172-
169+
173170
const safe = "\"" + path.join(__dirname, "temp") + "\"";
174171
</code></pre>
175-
172+
176173
2. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L9-L9)
177174
<pre><code class="javascript">
178175
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
179176
execa.shellSync('rm -rf ' + <strong>path.join(__dirname, "temp")</strong>); // NOT OK
180-
177+
181178
const safe = "\"" + path.join(__dirname, "temp") + "\"";
182179
</code></pre>
183-
180+
184181
3. [javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js](https://github.com/github/codeql/blob/48015e5a2e6202131f2d1062cc066dc33ed69a9b/javascript/ql/test/query-tests/Security/CWE-078/tst_shell-command-injection-from-environment.js#L9-L9)
185182
<pre><code class="javascript">
186183
execa.shell('rm -rf ' + path.join(__dirname, "temp")); // NOT OK
187184
execa.shellSync(<strong>'rm -rf ' + path.join(__dirname, "temp")</strong>); // NOT OK
188-
185+
189186
const safe = "\"" + path.join(__dirname, "temp") + "\"";
190187
</code></pre>
191-
192188

193189
</details>
194190

0 commit comments

Comments
 (0)