@rsaglobaltech/specgate 0.27.1 → 0.27.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/packages/core/src/domain/BriefCards.js +32 -5
- package/dist/packages/core/src/domain/BriefCards.js.map +1 -1
- package/dist/packages/core/src/domain/DraftChecklist.js +61 -1
- package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
- package/dist/packages/core/src/domain/QualityChecks.js +23 -0
- package/dist/packages/core/src/domain/QualityChecks.js.map +1 -1
- package/dist/scripts/cli/commands/change/TicketCommand.js +2 -1
- package/dist/scripts/cli/commands/change/TicketCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/Forja.js +61 -5
- package/dist/scripts/cli/commands/project/Forja.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js +19 -0
- package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/QualityCommand.js +23 -1
- package/dist/scripts/cli/commands/quality/QualityCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DraftCommand.js +16 -6
- package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StatusCommand.js +21 -2
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/draft/brief-check.js +55 -4
- package/dist/scripts/draft/brief-check.js.map +1 -1
- package/dist/scripts/draft/confined-agent.js +28 -1
- package/dist/scripts/draft/confined-agent.js.map +1 -1
- package/dist/scripts/lib/quality-presets.js +171 -72
- package/dist/scripts/lib/quality-presets.js.map +1 -1
- package/dist/scripts/lib/quality-run.js +41 -2
- package/dist/scripts/lib/quality-run.js.map +1 -1
- package/package.json +1 -1
|
@@ -58,6 +58,17 @@ const path = __importStar(require("node:path"));
|
|
|
58
58
|
const os = __importStar(require("node:os"));
|
|
59
59
|
const node_child_process_1 = require("node:child_process");
|
|
60
60
|
const AuthoringScope_1 = require("../../packages/core/src/domain/AuthoringScope");
|
|
61
|
+
/**
|
|
62
|
+
* Where what an undo removed is kept: inside the repository's git folder, so
|
|
63
|
+
* the working tree is left exactly as it was and nothing new shows in status.
|
|
64
|
+
*/
|
|
65
|
+
function undoneDir(projectDir) {
|
|
66
|
+
const r = (0, node_child_process_1.spawnSync)("git", ["-C", projectDir, "rev-parse", "--git-dir"], { encoding: "utf8" });
|
|
67
|
+
const gitDir = String(r.stdout || ".git").trim() || ".git";
|
|
68
|
+
const abs = path.resolve(projectDir, gitDir);
|
|
69
|
+
const rel = path.relative(projectDir, abs).split(path.sep).join("/");
|
|
70
|
+
return `${rel || ".git"}/specgate-undone`;
|
|
71
|
+
}
|
|
61
72
|
/** Every path git sees as changed or untracked, one file per entry. */
|
|
62
73
|
function dirtyPaths(projectDir) {
|
|
63
74
|
const r = (0, node_child_process_1.spawnSync)("git", ["-C", projectDir, "status", "--porcelain", "--untracked-files=all", "-z"], { encoding: "utf8" });
|
|
@@ -136,6 +147,18 @@ function runConfinedAgent(o) {
|
|
|
136
147
|
const after = dirtyPaths(o.projectDir) || [];
|
|
137
148
|
const wrote = [];
|
|
138
149
|
const reverted = [];
|
|
150
|
+
// Before a file is put back, what it held is kept (REQ-248).
|
|
151
|
+
const runDir = `${undoneDir(o.projectDir)}/${new Date().toISOString().replace(/[:.]/g, "-")}`;
|
|
152
|
+
let keptAny = false;
|
|
153
|
+
const keep = (rel) => {
|
|
154
|
+
const full = path.join(o.projectDir, rel);
|
|
155
|
+
if (!fs.existsSync(full) || !fs.statSync(full).isFile())
|
|
156
|
+
return;
|
|
157
|
+
const dest = path.join(o.projectDir, runDir, rel);
|
|
158
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
159
|
+
fs.copyFileSync(full, dest);
|
|
160
|
+
keptAny = true;
|
|
161
|
+
};
|
|
139
162
|
for (const rel of after) {
|
|
140
163
|
if (inScope(rel)) {
|
|
141
164
|
if (!before.includes(rel))
|
|
@@ -151,6 +174,7 @@ function runConfinedAgent(o) {
|
|
|
151
174
|
continue;
|
|
152
175
|
if (was !== null && now !== null && was.equals(now))
|
|
153
176
|
continue;
|
|
177
|
+
keep(rel);
|
|
154
178
|
if (was === null)
|
|
155
179
|
fs.rmSync(full, { recursive: true, force: true });
|
|
156
180
|
else
|
|
@@ -162,6 +186,7 @@ function runConfinedAgent(o) {
|
|
|
162
186
|
const tracked = (0, node_child_process_1.spawnSync)("git", ["-C", o.projectDir, "ls-files", "--error-unmatch", "--", rel], {
|
|
163
187
|
encoding: "utf8",
|
|
164
188
|
}).status === 0;
|
|
189
|
+
keep(rel);
|
|
165
190
|
if (tracked)
|
|
166
191
|
(0, node_child_process_1.spawnSync)("git", ["-C", o.projectDir, "checkout", "--", rel]);
|
|
167
192
|
else
|
|
@@ -180,6 +205,7 @@ function runConfinedAgent(o) {
|
|
|
180
205
|
reverted.push(rel);
|
|
181
206
|
}
|
|
182
207
|
}
|
|
208
|
+
const kept = keptAny ? runDir : undefined;
|
|
183
209
|
if (agent.status !== 0) {
|
|
184
210
|
const tail = `${agent.stdout || ""}${agent.stderr || ""}`.trim().slice(-500);
|
|
185
211
|
return {
|
|
@@ -188,8 +214,9 @@ function runConfinedAgent(o) {
|
|
|
188
214
|
detail: `exited ${agent.status ?? "on a signal"}${tail ? `: ${tail}` : ""}`,
|
|
189
215
|
wrote,
|
|
190
216
|
reverted,
|
|
217
|
+
kept,
|
|
191
218
|
};
|
|
192
219
|
}
|
|
193
|
-
return { ok: true, wrote, reverted };
|
|
220
|
+
return { ok: true, wrote, reverted, kept };
|
|
194
221
|
}
|
|
195
222
|
//# sourceMappingURL=confined-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confined-agent.js","sourceRoot":"","sources":["../../../scripts/draft/confined-agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"confined-agent.js","sourceRoot":"","sources":["../../../scripts/draft/confined-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,8 +34,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.IMAGES = void 0;
|
|
37
|
+
exports.detectApps = detectApps;
|
|
37
38
|
exports.detectStacks = detectStacks;
|
|
38
39
|
exports.javaVersion = javaVersion;
|
|
40
|
+
exports.pomGroup = pomGroup;
|
|
39
41
|
exports.presetYaml = presetYaml;
|
|
40
42
|
exports.withPreset = withPreset;
|
|
41
43
|
const fs = __importStar(require("node:fs"));
|
|
@@ -44,7 +46,7 @@ const path = __importStar(require("node:path"));
|
|
|
44
46
|
exports.IMAGES = {
|
|
45
47
|
gitleaks: "ghcr.io/gitleaks/gitleaks:v8.24.3",
|
|
46
48
|
semgrep: "semgrep/semgrep:1.99.0",
|
|
47
|
-
osv: "ghcr.io/google/osv-scanner:v2.
|
|
49
|
+
osv: "ghcr.io/google/osv-scanner:v2.2.4",
|
|
48
50
|
node: "node:22",
|
|
49
51
|
};
|
|
50
52
|
const read = (dir, rel) => {
|
|
@@ -55,18 +57,56 @@ const read = (dir, rel) => {
|
|
|
55
57
|
return "";
|
|
56
58
|
}
|
|
57
59
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
const STACKS = ["maven", "gradle", "node"];
|
|
61
|
+
const BUILD_FILES = {
|
|
62
|
+
maven: ["pom.xml"],
|
|
63
|
+
gradle: ["build.gradle", "build.gradle.kts", "settings.gradle", "settings.gradle.kts"],
|
|
64
|
+
node: ["package.json"],
|
|
65
|
+
};
|
|
66
|
+
const NOT_APPS = new Set(["node_modules", "target", "build", "dist", "docs", "features", "infra"]);
|
|
67
|
+
/** Folders one level down, and in apps/, packages/ and services/: where a monorepo keeps its apps. */
|
|
68
|
+
function appFolders(projectDir) {
|
|
69
|
+
const children = (rel) => {
|
|
70
|
+
try {
|
|
71
|
+
return fs
|
|
72
|
+
.readdirSync(path.join(projectDir, rel), { withFileTypes: true })
|
|
73
|
+
.filter((e) => e.isDirectory() && !e.name.startsWith(".") && !NOT_APPS.has(e.name))
|
|
74
|
+
.map((e) => (rel ? `${rel}/${e.name}` : e.name))
|
|
75
|
+
.sort();
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const top = children("");
|
|
82
|
+
const nested = ["apps", "packages", "services"].flatMap((d) => top.includes(d) ? children(d) : []);
|
|
83
|
+
return [...top, ...nested];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Each stack with the folder it is built in (REQ-235). The root wins: a stack
|
|
87
|
+
* whose build file is at the root covers the whole repository (a Maven
|
|
88
|
+
* reactor, npm workspaces); otherwise each folder with that build file is an
|
|
89
|
+
* app of its own, such as forja's `apps/api`.
|
|
90
|
+
*/
|
|
91
|
+
function detectApps(projectDir) {
|
|
60
92
|
const has = (rel) => fs.existsSync(path.join(projectDir, rel));
|
|
61
93
|
const out = [];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
94
|
+
const folders = appFolders(projectDir);
|
|
95
|
+
for (const stack of STACKS) {
|
|
96
|
+
const at = (dir) => BUILD_FILES[stack].some((f) => has(dir ? `${dir}/${f}` : f));
|
|
97
|
+
if (at(""))
|
|
98
|
+
out.push({ stack, dir: "" });
|
|
99
|
+
else
|
|
100
|
+
for (const dir of folders)
|
|
101
|
+
if (at(dir))
|
|
102
|
+
out.push({ stack, dir });
|
|
103
|
+
}
|
|
68
104
|
return out;
|
|
69
105
|
}
|
|
106
|
+
/** The stacks a project's build files give away, in the order presets are written. */
|
|
107
|
+
function detectStacks(projectDir) {
|
|
108
|
+
return [...new Set(detectApps(projectDir).map((a) => a.stack))];
|
|
109
|
+
}
|
|
70
110
|
/** The JDK a Java build declares (release, source or java.version), 21 when it says none. */
|
|
71
111
|
function javaVersion(projectDir) {
|
|
72
112
|
const text = `${read(projectDir, "pom.xml")}\n${read(projectDir, "build.gradle")}\n${read(projectDir, "build.gradle.kts")}`;
|
|
@@ -107,14 +147,19 @@ function render(c) {
|
|
|
107
147
|
...(c.report ? [` report: ${c.report}`] : []),
|
|
108
148
|
...(c.scope ? [` scope: ${c.scope}`] : []),
|
|
109
149
|
...(c.timeout ? [` timeout: ${c.timeout}`] : []),
|
|
150
|
+
...(c.docker ? [" docker: true"] : []),
|
|
151
|
+
...(c.needs ? [` needs: ${c.needs}`] : []),
|
|
110
152
|
];
|
|
111
153
|
return c.missing ? [` # ${c.missing}`, ...lines.map((l) => ` #${l.slice(1)}`)] : lines;
|
|
112
154
|
}
|
|
113
|
-
/**
|
|
114
|
-
|
|
155
|
+
/**
|
|
156
|
+
* The secrets and dependency checks every stack shares; `depsLock` is from the
|
|
157
|
+
* root, and `generated` when a check before it writes it (Maven's bill of materials).
|
|
158
|
+
*/
|
|
159
|
+
function shared(projectDir, level, depsLock, generated = false) {
|
|
115
160
|
// osv-scanner reads a lockfile (or pom.xml); without one it finds nothing to
|
|
116
161
|
// scan and writes no SARIF, so the check would fail on every run.
|
|
117
|
-
const lockMissing = !fs.existsSync(path.join(projectDir, depsLock))
|
|
162
|
+
const lockMissing = !generated && !fs.existsSync(path.join(projectDir, depsLock))
|
|
118
163
|
? `Dependencies need ${depsLock}, which this project does not have yet; once it does, uncomment:`
|
|
119
164
|
: undefined;
|
|
120
165
|
return [
|
|
@@ -137,53 +182,100 @@ function shared(projectDir, level, depsLock) {
|
|
|
137
182
|
},
|
|
138
183
|
];
|
|
139
184
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
185
|
+
/** A path of an app, from the root. */
|
|
186
|
+
const inApp = (dir, rel) => (dir ? `${dir}/${rel}` : rel);
|
|
187
|
+
/** A command of an app, run in its folder. */
|
|
188
|
+
const cdApp = (dir, cmd) => (dir ? `cd ${dir} && ${cmd}` : cmd);
|
|
189
|
+
/** Semgrep's rules for a stack: one scan carries every stack's (REQ-235). */
|
|
190
|
+
const SEMGREP_RULES = {
|
|
191
|
+
maven: ["p/java"],
|
|
192
|
+
gradle: ["p/java"],
|
|
193
|
+
node: ["p/typescript", "p/react"],
|
|
194
|
+
};
|
|
195
|
+
function semgrep(rules) {
|
|
196
|
+
return {
|
|
197
|
+
name: "semgrep",
|
|
198
|
+
run: `semgrep scan ${rules.map((r) => `--config ${r}`).join(" ")} --sarif --output .specgate/quality/semgrep.sarif --metrics off --quiet`,
|
|
199
|
+
when: "end",
|
|
200
|
+
image: exports.IMAGES.semgrep,
|
|
201
|
+
sarif: ".specgate/quality/semgrep.sarif",
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/** The project's own group in a pom, its parent's and its dependencies' aside; "" when it names none. */
|
|
205
|
+
function pomGroup(pom) {
|
|
206
|
+
const own = pom.replace(/<(parent|dependencies|dependencyManagement|build|profiles|reporting|plugins|pluginRepositories|repositories)\b[\s\S]*?<\/\1>/g, "");
|
|
207
|
+
return (/<groupId>\s*([\w.-]+)\s*<\/groupId>/.exec(own) || [])[1] || "";
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Coverage with JaCoCo's agent on the project's classes only (REQ-250). With
|
|
211
|
+
* every class instrumented, Testcontainers' were too: its container stop ran
|
|
212
|
+
* into JaCoCo's dump at shutdown and Surefire killed the JVM after 30 s, on
|
|
213
|
+
* every run of a Spring Boot API (truck-flote, S36).
|
|
214
|
+
*/
|
|
215
|
+
function jacocoCoverage(mvn, group) {
|
|
216
|
+
const report = "org.jacoco:jacoco-maven-plugin:0.8.12:report";
|
|
217
|
+
if (!group)
|
|
218
|
+
return `${mvn} org.jacoco:jacoco-maven-plugin:0.8.12:prepare-agent test ${report}`;
|
|
219
|
+
const agent = "org.apache.maven.plugins:maven-dependency-plugin:3.8.1:copy -Dartifact=org.jacoco:org.jacoco.agent:0.8.12:jar:runtime -DoutputDirectory=target/jacoco-agent -Dmdep.stripVersion=true";
|
|
220
|
+
return `${mvn} ${agent} test ${report} '-DargLine=-javaagent:target/jacoco-agent/org.jacoco.agent-runtime.jar=destfile=target/jacoco.exec,includes=${group}.*'`;
|
|
221
|
+
}
|
|
222
|
+
function maven(projectDir, level, dir = "") {
|
|
223
|
+
const appDir = path.join(projectDir, dir);
|
|
224
|
+
const pom = read(appDir, "pom.xml");
|
|
225
|
+
const image = `maven:3.9-eclipse-temurin-${javaVersion(appDir)}`;
|
|
143
226
|
const m2 = ["specgate-m2:/root/.m2"];
|
|
144
227
|
const mvn = "mvn -B -q";
|
|
228
|
+
// REQ-238: the tests start containers; they need the host's Docker.
|
|
229
|
+
const testcontainers = /org\.testcontainers/.test(pom);
|
|
230
|
+
// REQ-237: Maven resolves what a parent POM or a BOM manages, with its own
|
|
231
|
+
// repositories and cache; osv-scanner then reads that bill of materials.
|
|
232
|
+
const [secrets, dependencies] = shared(projectDir, level, inApp(dir, "target/bom.json"), true);
|
|
145
233
|
const checks = [
|
|
146
|
-
|
|
234
|
+
secrets,
|
|
235
|
+
{
|
|
236
|
+
name: "sbom",
|
|
237
|
+
run: cdApp(dir, `${mvn} org.cyclonedx:cyclonedx-maven-plugin:2.9.1:makeBom -DoutputFormat=json -DoutputName=bom`),
|
|
238
|
+
when: dependencies.when,
|
|
239
|
+
image,
|
|
240
|
+
volumes: m2,
|
|
241
|
+
},
|
|
242
|
+
{ ...dependencies, needs: "sbom" },
|
|
147
243
|
{
|
|
148
244
|
name: "coverage",
|
|
149
|
-
run:
|
|
245
|
+
run: cdApp(dir, jacocoCoverage(mvn, pomGroup(pom))),
|
|
150
246
|
when: "attempt",
|
|
151
247
|
image,
|
|
152
248
|
volumes: m2,
|
|
153
|
-
report: "
|
|
249
|
+
report: `jacoco:${inApp(dir, "target/site/jacoco/jacoco.xml")}`,
|
|
154
250
|
timeout: 1800,
|
|
251
|
+
docker: testcontainers,
|
|
155
252
|
},
|
|
156
253
|
{
|
|
157
254
|
name: "spotbugs",
|
|
158
|
-
run: `${mvn} compile com.github.spotbugs:spotbugs-maven-plugin:4.8.6.6:spotbugs -Dspotbugs.sarifOutput=true
|
|
255
|
+
run: cdApp(dir, `${mvn} compile com.github.spotbugs:spotbugs-maven-plugin:4.8.6.6:spotbugs -Dspotbugs.sarifOutput=true`),
|
|
159
256
|
when: level === "strict" ? "attempt" : "end",
|
|
160
257
|
image,
|
|
161
258
|
volumes: m2,
|
|
162
|
-
sarif: "target/spotbugsSarif.json",
|
|
259
|
+
sarif: inApp(dir, "target/spotbugsSarif.json"),
|
|
163
260
|
},
|
|
164
261
|
];
|
|
165
262
|
if (level === "strict") {
|
|
166
263
|
checks.push({
|
|
167
264
|
name: "pmd",
|
|
168
|
-
run: `${mvn} org.apache.maven.plugins:maven-pmd-plugin:3.26.0:pmd -Dformat=net.sourceforge.pmd.renderers.SarifRenderer -DlinkXRef=false
|
|
265
|
+
run: cdApp(dir, `${mvn} org.apache.maven.plugins:maven-pmd-plugin:3.26.0:pmd -Dformat=net.sourceforge.pmd.renderers.SarifRenderer -DlinkXRef=false`),
|
|
169
266
|
when: "attempt",
|
|
170
267
|
image,
|
|
171
268
|
volumes: m2,
|
|
172
|
-
sarif: "target/pmd.sarif.json",
|
|
173
|
-
}, {
|
|
174
|
-
name: "semgrep",
|
|
175
|
-
run: "semgrep scan --config p/java --sarif --output .specgate/quality/semgrep.sarif --metrics off --quiet",
|
|
176
|
-
when: "end",
|
|
177
|
-
image: exports.IMAGES.semgrep,
|
|
178
|
-
sarif: ".specgate/quality/semgrep.sarif",
|
|
179
|
-
}, {
|
|
269
|
+
sarif: inApp(dir, "target/pmd.sarif.json"),
|
|
270
|
+
}, semgrep(SEMGREP_RULES.maven), {
|
|
180
271
|
name: "mutation",
|
|
181
|
-
run: `${mvn} test-compile org.pitest:pitest-maven:mutationCoverage -DtargetClasses
|
|
272
|
+
run: cdApp(dir, `${mvn} test-compile org.pitest:pitest-maven:mutationCoverage -DtargetClasses=${dir ? `{changed_classes@${dir}}` : "{changed_classes}"} -DoutputFormats=XML -DtimestampedReports=false`),
|
|
182
273
|
when: "end",
|
|
183
274
|
image,
|
|
184
275
|
volumes: m2,
|
|
185
|
-
report: "
|
|
276
|
+
report: `pit:${inApp(dir, "target/pit-reports/mutations.xml")}`,
|
|
186
277
|
timeout: 3600,
|
|
278
|
+
docker: testcontainers,
|
|
187
279
|
missing: /pitest-maven/.test(pom)
|
|
188
280
|
? undefined
|
|
189
281
|
: "Mutation needs pitest-maven with pitest-junit5-plugin declared in pom.xml (JUnit 5 cannot be added from the command line); add them and uncomment:",
|
|
@@ -191,59 +283,58 @@ function maven(projectDir, level) {
|
|
|
191
283
|
}
|
|
192
284
|
return checks;
|
|
193
285
|
}
|
|
194
|
-
function gradle(projectDir, level) {
|
|
195
|
-
const
|
|
286
|
+
function gradle(projectDir, level, dir = "") {
|
|
287
|
+
const appDir = path.join(projectDir, dir);
|
|
288
|
+
const build = `${read(appDir, "build.gradle")}\n${read(appDir, "build.gradle.kts")}`;
|
|
196
289
|
// osv-scanner reads Gradle's lockfile, not the build script: dependency locking must be on.
|
|
197
|
-
const lock = "gradle.lockfile";
|
|
198
|
-
const image = `gradle:8-jdk${javaVersion(
|
|
290
|
+
const lock = inApp(dir, "gradle.lockfile");
|
|
291
|
+
const image = `gradle:8-jdk${javaVersion(appDir)}`;
|
|
199
292
|
const cache = ["specgate-gradle:/home/gradle/.gradle"];
|
|
200
293
|
const checks = [
|
|
201
294
|
...shared(projectDir, level, lock),
|
|
202
295
|
{
|
|
203
296
|
name: "coverage",
|
|
204
|
-
run: "gradle --no-daemon -q test jacocoTestReport",
|
|
297
|
+
run: cdApp(dir, "gradle --no-daemon -q test jacocoTestReport"),
|
|
205
298
|
when: "attempt",
|
|
206
299
|
image,
|
|
207
300
|
volumes: cache,
|
|
208
|
-
report: "
|
|
301
|
+
report: `jacoco:${inApp(dir, "build/reports/jacoco/test/jacocoTestReport.xml")}`,
|
|
302
|
+
docker: /org\.testcontainers/.test(build),
|
|
209
303
|
timeout: 1800,
|
|
210
304
|
missing: /\bjacoco\b/.test(build)
|
|
211
305
|
? undefined
|
|
212
306
|
: "Coverage needs the jacoco plugin applied, with reports { xml.required = true }; add it and uncomment:",
|
|
213
307
|
},
|
|
214
308
|
];
|
|
215
|
-
if (level === "strict")
|
|
216
|
-
checks.push(
|
|
217
|
-
name: "semgrep",
|
|
218
|
-
run: "semgrep scan --config p/java --sarif --output .specgate/quality/semgrep.sarif --metrics off --quiet",
|
|
219
|
-
when: "end",
|
|
220
|
-
image: exports.IMAGES.semgrep,
|
|
221
|
-
sarif: ".specgate/quality/semgrep.sarif",
|
|
222
|
-
});
|
|
223
|
-
}
|
|
309
|
+
if (level === "strict")
|
|
310
|
+
checks.push(semgrep(SEMGREP_RULES.gradle));
|
|
224
311
|
return checks;
|
|
225
312
|
}
|
|
226
|
-
function node(projectDir, level) {
|
|
313
|
+
function node(projectDir, level, dir = "") {
|
|
314
|
+
const appDir = path.join(projectDir, dir);
|
|
227
315
|
let pkg = {};
|
|
228
316
|
try {
|
|
229
|
-
pkg = JSON.parse(read(
|
|
317
|
+
pkg = JSON.parse(read(appDir, "package.json") || "{}");
|
|
230
318
|
}
|
|
231
319
|
catch {
|
|
232
320
|
pkg = {};
|
|
233
321
|
}
|
|
234
322
|
const deps = { ...(pkg.dependencies || {}), ...(pkg.devDependencies || {}) };
|
|
235
|
-
const { lock, install } = nodeInstall(
|
|
323
|
+
const { lock, install } = nodeInstall(appDir);
|
|
236
324
|
const slug = path
|
|
237
|
-
.basename(
|
|
325
|
+
.basename(appDir)
|
|
238
326
|
.toLowerCase()
|
|
239
327
|
.replace(/[^a-z0-9]+/g, "-")
|
|
240
328
|
.replace(/^-|-$/g, "") || "project";
|
|
241
329
|
// node_modules lives in a volume: the host's may hold another platform's binaries.
|
|
242
|
-
const volumes = [
|
|
243
|
-
|
|
244
|
-
|
|
330
|
+
const volumes = [
|
|
331
|
+
`specgate-nm-${slug}:/src/${inApp(dir, "node_modules")}`,
|
|
332
|
+
"specgate-npm:/root/.npm",
|
|
333
|
+
];
|
|
334
|
+
const inNode = (cmd) => cdApp(dir, `${install} && ${cmd}`);
|
|
335
|
+
const tsconfig = fs.existsSync(path.join(appDir, "tsconfig.json"));
|
|
245
336
|
const runner = deps.vitest ? "vitest" : deps.jest ? "jest" : "";
|
|
246
|
-
const checks = [...shared(projectDir, level, lock)];
|
|
337
|
+
const checks = [...shared(projectDir, level, inApp(dir, lock))];
|
|
247
338
|
if (tsconfig) {
|
|
248
339
|
checks.push({
|
|
249
340
|
name: "types",
|
|
@@ -270,7 +361,7 @@ function node(projectDir, level) {
|
|
|
270
361
|
when: "attempt",
|
|
271
362
|
image: exports.IMAGES.node,
|
|
272
363
|
volumes,
|
|
273
|
-
report: "
|
|
364
|
+
report: `lcov:${inApp(dir, "coverage/lcov.info")}`,
|
|
274
365
|
timeout: 1800,
|
|
275
366
|
missing: runner
|
|
276
367
|
? runner === "vitest" && !deps["@vitest/coverage-v8"] && !deps["@vitest/coverage-istanbul"]
|
|
@@ -279,19 +370,13 @@ function node(projectDir, level) {
|
|
|
279
370
|
: "Coverage needs Vitest or Jest; with one installed, uncomment:",
|
|
280
371
|
});
|
|
281
372
|
if (level === "strict") {
|
|
282
|
-
checks.push({
|
|
283
|
-
name: "semgrep",
|
|
284
|
-
run: "semgrep scan --config p/typescript --config p/react --sarif --output .specgate/quality/semgrep.sarif --metrics off --quiet",
|
|
285
|
-
when: "end",
|
|
286
|
-
image: exports.IMAGES.semgrep,
|
|
287
|
-
sarif: ".specgate/quality/semgrep.sarif",
|
|
288
|
-
}, {
|
|
373
|
+
checks.push(semgrep(SEMGREP_RULES.node), {
|
|
289
374
|
name: "mutation",
|
|
290
|
-
run: inNode(
|
|
375
|
+
run: inNode(`npx --no-install stryker run --mutate ${dir ? `{changed_src@${dir}}` : "{changed_src}"} --reporters json`),
|
|
291
376
|
when: "end",
|
|
292
377
|
image: exports.IMAGES.node,
|
|
293
378
|
volumes,
|
|
294
|
-
report: "
|
|
379
|
+
report: `stryker:${inApp(dir, "reports/mutation/mutation.json")}`,
|
|
295
380
|
timeout: 3600,
|
|
296
381
|
missing: deps["@stryker-mutator/core"]
|
|
297
382
|
? undefined
|
|
@@ -302,7 +387,10 @@ function node(projectDir, level) {
|
|
|
302
387
|
}
|
|
303
388
|
/** The `quality:` block a level writes for a project, as YAML lines. */
|
|
304
389
|
function presetYaml(projectDir, level) {
|
|
305
|
-
const
|
|
390
|
+
const found = detectApps(projectDir);
|
|
391
|
+
const apps = found.length ? found : [{ stack: "node", dir: "" }];
|
|
392
|
+
// One Semgrep scan of the repository, with the rules of every stack in it.
|
|
393
|
+
const rules = [...new Set(apps.flatMap((a) => SEMGREP_RULES[a.stack]))];
|
|
306
394
|
const lines = [
|
|
307
395
|
"# Quality and security checks (ADR-0040), written by `specgate quality init`.",
|
|
308
396
|
"# Every check runs in Docker, with tools that need no account. Take the",
|
|
@@ -332,19 +420,30 @@ function presetYaml(projectDir, level) {
|
|
|
332
420
|
" runner: local",
|
|
333
421
|
];
|
|
334
422
|
const seen = new Set(["commits"]);
|
|
335
|
-
for (const stack
|
|
423
|
+
for (const { stack, dir } of apps) {
|
|
336
424
|
const checks = stack === "maven"
|
|
337
|
-
? maven(projectDir, level)
|
|
425
|
+
? maven(projectDir, level, dir)
|
|
338
426
|
: stack === "gradle"
|
|
339
|
-
? gradle(projectDir, level)
|
|
340
|
-
: node(projectDir, level);
|
|
427
|
+
? gradle(projectDir, level, dir)
|
|
428
|
+
: node(projectDir, level, dir);
|
|
341
429
|
for (const c of checks) {
|
|
342
|
-
// One secrets scan for the whole repository; per-
|
|
343
|
-
|
|
430
|
+
// One secrets and one Semgrep scan for the whole repository; per-app
|
|
431
|
+
// checks get the stack's name, then the folder's when a stack repeats.
|
|
344
432
|
if (seen.has(c.name) && (c.name === "secrets" || c.name === "semgrep"))
|
|
345
433
|
continue;
|
|
434
|
+
let name = c.name;
|
|
435
|
+
if (seen.has(name))
|
|
436
|
+
name = `${c.name}-${stack}`;
|
|
437
|
+
if (seen.has(name) && dir)
|
|
438
|
+
name = `${c.name}-${path.basename(dir)}`;
|
|
346
439
|
seen.add(name);
|
|
347
|
-
|
|
440
|
+
let check = c.name === "semgrep" ? { ...semgrep(rules), name } : { ...c, name };
|
|
441
|
+
// A renamed check writes its own report: `osv.sarif` → `dependencies-node.sarif`.
|
|
442
|
+
if (name !== c.name && check.sarif && check.sarif.startsWith(".specgate/quality/")) {
|
|
443
|
+
const own = `.specgate/quality/${name}.sarif`;
|
|
444
|
+
check = { ...check, run: check.run.split(check.sarif).join(own), sarif: own };
|
|
445
|
+
}
|
|
446
|
+
lines.push(...render(check));
|
|
348
447
|
}
|
|
349
448
|
}
|
|
350
449
|
if (level === "strict")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-presets.js","sourceRoot":"","sources":["../../../scripts/lib/quality-presets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,oCAOC;AAGD,kCASC;AAkQD,gCAgDC;AASD,gCAcC;AA5XD,4CAA8B;AAC9B,gDAAkC;AAclC,gEAAgE;AACnD,QAAA,MAAM,GAAG;IACpB,QAAQ,EAAE,mCAAmC;IAC7C,OAAO,EAAE,wBAAwB;IACjC,GAAG,EAAE,mCAAmC;IACxC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IACxC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,sFAAsF;AACtF,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,GAAG,CAAC,cAAc,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6FAA6F;AAC7F,SAAgB,WAAW,CAAC,UAAkB;IAC5C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAC5H,MAAM,CAAC,GACL,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/E,gEAAgE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,2DAA2D;AAC3D,SAAS,WAAW,CAAC,UAAkB;IACrC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,GAAG,CAAC,gBAAgB,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,qEAAqE;SAC/E,CAAC;IACJ,IAAI,GAAG,CAAC,WAAW,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,4DAA4D;SACtE,CAAC;IACJ,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;AACxF,CAAC;AAkBD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAE3C,SAAS,MAAM,CAAC,CAAc;IAC5B,MAAM,KAAK,GAAG;QACZ,aAAa,CAAC,CAAC,IAAI,EAAE;QACrB,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACtB,aAAa,CAAC,CAAC,IAAI,EAAE;QACrB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,oBAAoB;QACpB,cAAc,CAAC,CAAC,KAAK,EAAE;QACvB,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;IACF,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3F,CAAC;AAED,4DAA4D;AAC5D,SAAS,MAAM,CAAC,UAAkB,EAAE,KAAY,EAAE,QAAgB;IAChE,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC,qBAAqB,QAAQ,kEAAkE;QACjG,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,iGAAiG;YACtG,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,cAAM,CAAC,QAAQ;YACtB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kCAAkC;SAC1C;QACD;YACE,IAAI,EAAE,cAAc;YACpB,GAAG,EAAE,+BAA+B,QAAQ,sDAAsD;YAClG,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;YAC5C,KAAK,EAAE,cAAM,CAAC,GAAG;YACjB,KAAK,EAAE,6BAA6B;YACpC,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,WAAW;SACrB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,UAAkB,EAAE,KAAY;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,6BAA6B,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;IACrE,MAAM,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,MAAM,MAAM,GAAkB;QAC5B,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;QACvC;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,GAAG,GAAG,wGAAwG;YACnH,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,sCAAsC;YAC9C,OAAO,EAAE,IAAI;SACd;QACD;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,GAAG,GAAG,iGAAiG;YAC5G,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;YAC5C,KAAK;YACL,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,2BAA2B;SACnC;KACF,CAAC;IACF,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT;YACE,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,GAAG,GAAG,6HAA6H;YACxI,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,uBAAuB;SAC/B,EACD;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,qGAAqG;YAC1G,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,cAAM,CAAC,OAAO;YACrB,KAAK,EAAE,iCAAiC;SACzC,EACD;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,GAAG,GAAG,yIAAyI;YACpJ,IAAI,EAAE,KAAK;YACX,KAAK;YACL,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,sCAAsC;YAC9C,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,oJAAoJ;SACzJ,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,UAAkB,EAAE,KAAY;IAC9C,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAC7F,4FAA4F;IAC5F,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC/B,MAAM,KAAK,GAAG,eAAe,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAkB;QAC5B,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;QAClC;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,6CAA6C;YAClD,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,uDAAuD;YAC/D,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,uGAAuG;SAC5G;KACF,CAAC;IACF,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,qGAAqG;YAC1G,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,cAAM,CAAC,OAAO;YACrB,KAAK,EAAE,iCAAiC;SACzC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,UAAkB,EAAE,KAAY;IAC5C,IAAI,GAAG,GAAwF,EAAE,CAAC;IAClG,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,IAAI,GACR,IAAI;SACD,QAAQ,CAAC,UAAU,CAAC;SACpB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IACxC,mFAAmF;IACnF,MAAM,OAAO,GAAG,CAAC,eAAe,IAAI,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,OAAO,OAAO,GAAG,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,MAAM,CAAC,+BAA+B,CAAC;YAC5C,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,cAAM,CAAC,IAAI;YAClB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,MAAM,CAAC,2BAA2B,CAAC;YACxC,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,cAAM,CAAC,IAAI;YAClB,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,MAAM,CACT,MAAM,KAAK,MAAM;YACf,CAAC,CAAC,2DAA2D;YAC7D,CAAC,CAAC,iEAAiE,CACtE;QACD,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,cAAM,CAAC,IAAI;QAClB,OAAO;QACP,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,MAAM;YACb,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBACzF,CAAC,CAAC,8EAA8E;gBAChF,CAAC,CAAC,SAAS;YACb,CAAC,CAAC,+DAA+D;KACpE,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,4HAA4H;YACjI,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,cAAM,CAAC,OAAO;YACrB,KAAK,EAAE,iCAAiC;SACzC,EACD;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,MAAM,CAAC,sEAAsE,CAAC;YACnF,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,cAAM,CAAC,IAAI;YAClB,OAAO;YACP,MAAM,EAAE,wCAAwC;YAChD,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC;gBACpC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,iGAAiG;SACtG,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,SAAgB,UAAU,CAAC,UAAkB,EAAE,KAAY;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG;QACZ,+EAA+E;QAC/E,yEAAyE;QACzE,0EAA0E;QAC1E,YAAY,KAAK,EAAE;QACnB,SAAS;QACT,0EAA0E;QAC1E,mBAAmB;QACnB,4BAA4B;QAC5B,mBAAmB;QACnB,mBAAmB;KACpB,CAAC;IACF,MAAM,KAAK,GAAG;QACZ,iFAAiF;QACjF,oFAAoF;QACpF,mBAAmB;QACnB,4BAA4B;QAC5B,iBAAiB;QACjB,sBAAsB;QACtB,4CAA4C;QAC5C,qBAAqB;QACrB,gFAAgF;QAChF,kBAAkB;QAClB,2BAA2B;QAC3B,eAAe;QACf,iBAAiB;QACjB,mBAAmB;KACpB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,CAAa,EAAE,CAAC;QACnE,MAAM,MAAM,GACV,KAAK,KAAK,OAAO;YACf,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;YAC1B,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAClB,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC3B,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,oFAAoF;YACpF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;gBAAE,SAAS;YACjF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,0DAA0D;AAC1D,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAEvE;;;GAGG;AACH,SAAgB,UAAU,CAAC,MAAc,EAAE,MAAc;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG;YAAE,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,QAAQ,GAAG,KAAK,CAAC;QAC/D,IAAI,QAAQ;YAAE,SAAS;QACvB,IAAI,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC;YACxF,SAAS;QACX,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"quality-presets.js","sourceRoot":"","sources":["../../../scripts/lib/quality-presets.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,6 +37,7 @@ exports.REPORTS = void 0;
|
|
|
37
37
|
exports.commitsOutcome = commitsOutcome;
|
|
38
38
|
exports.changedLineMap = changedLineMap;
|
|
39
39
|
exports.measureReport = measureReport;
|
|
40
|
+
exports.ignoredByGit = ignoredByGit;
|
|
40
41
|
exports.sarifFindings = sarifFindings;
|
|
41
42
|
exports.repositoryPath = repositoryPath;
|
|
42
43
|
exports.baseOf = baseOf;
|
|
@@ -160,14 +161,36 @@ function linesOf(projectDir) {
|
|
|
160
161
|
return cache.get(rel);
|
|
161
162
|
};
|
|
162
163
|
}
|
|
163
|
-
/**
|
|
164
|
+
/** The paths, of those given, that git ignores; none outside a repository. */
|
|
165
|
+
function ignoredByGit(projectDir, paths) {
|
|
166
|
+
if (paths.length === 0)
|
|
167
|
+
return new Set();
|
|
168
|
+
const r = (0, node_child_process_1.spawnSync)("git", ["-C", projectDir, "check-ignore", "--stdin"], {
|
|
169
|
+
input: paths.join("\n") + "\n",
|
|
170
|
+
encoding: "utf8",
|
|
171
|
+
});
|
|
172
|
+
// 0: some are ignored; 1: none are; anything else: not a repository.
|
|
173
|
+
if (r.status !== 0)
|
|
174
|
+
return new Set();
|
|
175
|
+
return new Set(String(r.stdout)
|
|
176
|
+
.split(/\r?\n/)
|
|
177
|
+
.map((l) => l.trim().replace(/\\/g, "/"))
|
|
178
|
+
.filter(Boolean));
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Every finding of a check's SARIF, or null when it wrote none. A finding in
|
|
182
|
+
* a file git ignores (REQ-241) — a development `.env.local` — is never part
|
|
183
|
+
* of a change or of the repository, so it is left out.
|
|
184
|
+
*/
|
|
164
185
|
function sarifFindings(projectDir, check) {
|
|
165
186
|
if (!check.sarif)
|
|
166
187
|
return null;
|
|
167
188
|
const file = path.join(projectDir, check.sarif);
|
|
168
189
|
if (!fs.existsSync(file))
|
|
169
190
|
return null;
|
|
170
|
-
|
|
191
|
+
const findings = (0, Sarif_1.readSarif)(fs.readFileSync(file, "utf8"), projectDir, linesOf(projectDir), repositoryPath(projectDir));
|
|
192
|
+
const ignored = ignoredByGit(projectDir, [...new Set(findings.map((f) => f.path))]);
|
|
193
|
+
return ignored.size ? findings.filter((f) => !ignored.has(f.path)) : findings;
|
|
171
194
|
}
|
|
172
195
|
/**
|
|
173
196
|
* A path a tool reported, as the repository file it is: itself when it
|
|
@@ -332,6 +355,20 @@ function dockerArgs(check, projectDir, command, container) {
|
|
|
332
355
|
...(check.network ? [] : ["--network", "none"]),
|
|
333
356
|
...check.env.flatMap((e) => ["-e", e]),
|
|
334
357
|
...check.volumes.flatMap((v) => ["-v", v]),
|
|
358
|
+
// REQ-238: tests that start containers (Testcontainers) reach the host's
|
|
359
|
+
// Docker, and the containers they start through the host's address.
|
|
360
|
+
...(check.docker
|
|
361
|
+
? [
|
|
362
|
+
"-v",
|
|
363
|
+
"/var/run/docker.sock:/var/run/docker.sock",
|
|
364
|
+
"-e",
|
|
365
|
+
"TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal",
|
|
366
|
+
"-e",
|
|
367
|
+
"TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock",
|
|
368
|
+
"--add-host",
|
|
369
|
+
"host.docker.internal:host-gateway",
|
|
370
|
+
]
|
|
371
|
+
: []),
|
|
335
372
|
...(check.shell
|
|
336
373
|
? ["--entrypoint", "sh", check.image, "-c", script]
|
|
337
374
|
: [check.image, ...splitArgs(command)]),
|
|
@@ -530,6 +567,8 @@ function archCheck(archCmd, archSarif) {
|
|
|
530
567
|
report: null,
|
|
531
568
|
scope: "diff",
|
|
532
569
|
profile: "",
|
|
570
|
+
docker: false,
|
|
571
|
+
needs: "",
|
|
533
572
|
};
|
|
534
573
|
}
|
|
535
574
|
/** `arch_cmd` judged through its SARIF, shaped like spawnSync's result for the gates that run it. */
|