openpitstop 1.0.0
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/LICENSE +21 -0
- package/README.md +512 -0
- package/demo-repo/README.md +24 -0
- package/demo-repo/package-lock.json +4483 -0
- package/demo-repo/package.json +17 -0
- package/demo-repo/src/config.js +5 -0
- package/demo-repo/src/db.js +31 -0
- package/demo-repo/src/server.js +13 -0
- package/demo-repo/src/userController.js +22 -0
- package/demo-repo/src/userRepo.js +18 -0
- package/demo-repo/src/userService.js +59 -0
- package/demo-repo/test/user.test.js +12 -0
- package/demo-repo-fintech/README.md +27 -0
- package/demo-repo-fintech/package-lock.json +1023 -0
- package/demo-repo-fintech/package.json +14 -0
- package/demo-repo-fintech/pitstop-repro-ledger-order-ord-conc-1-charged-2.test.mjs +175 -0
- package/demo-repo-fintech/pitstop-repro-ledger-order-ord-retry-2-charged-2.test.mjs +175 -0
- package/demo-repo-fintech/pitstop-repro-ledger-order-ord-webhook-3-charged-2.test.mjs +175 -0
- package/demo-repo-fintech/src/gateway.js +26 -0
- package/demo-repo-fintech/src/server.js +61 -0
- package/demo-repo-generators/package-lock.json +1508 -0
- package/demo-repo-generators/package.json +17 -0
- package/demo-repo-generators/public/index.html +10 -0
- package/demo-repo-generators/scripts/build.js +17 -0
- package/demo-repo-generators/src/counter.js +16 -0
- package/demo-repo-integrity/README.md +49 -0
- package/demo-repo-integrity/package.json +12 -0
- package/demo-repo-integrity/src/money.js +19 -0
- package/demo-repo-integrity/test/money.test.js +17 -0
- package/dist/analyzers/accessibility.d.ts +18 -0
- package/dist/analyzers/accessibility.js +248 -0
- package/dist/analyzers/accessibility.js.map +1 -0
- package/dist/analyzers/dependencyGraph.d.ts +14 -0
- package/dist/analyzers/dependencyGraph.js +206 -0
- package/dist/analyzers/dependencyGraph.js.map +1 -0
- package/dist/analyzers/devex.d.ts +19 -0
- package/dist/analyzers/devex.js +301 -0
- package/dist/analyzers/devex.js.map +1 -0
- package/dist/analyzers/duplication.d.ts +2 -0
- package/dist/analyzers/duplication.js +47 -0
- package/dist/analyzers/duplication.js.map +1 -0
- package/dist/analyzers/index.d.ts +12 -0
- package/dist/analyzers/index.js +38 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/integrity/assertionLiteralTamper.d.ts +2 -0
- package/dist/analyzers/integrity/assertionLiteralTamper.js +164 -0
- package/dist/analyzers/integrity/assertionLiteralTamper.js.map +1 -0
- package/dist/analyzers/integrity/exceptionSwallow.d.ts +2 -0
- package/dist/analyzers/integrity/exceptionSwallow.js +198 -0
- package/dist/analyzers/integrity/exceptionSwallow.js.map +1 -0
- package/dist/analyzers/integrity/exitCheat.d.ts +2 -0
- package/dist/analyzers/integrity/exitCheat.js +31 -0
- package/dist/analyzers/integrity/exitCheat.js.map +1 -0
- package/dist/analyzers/integrity/git.d.ts +10 -0
- package/dist/analyzers/integrity/git.js +181 -0
- package/dist/analyzers/integrity/git.js.map +1 -0
- package/dist/analyzers/integrity/hardcodedMatch.d.ts +2 -0
- package/dist/analyzers/integrity/hardcodedMatch.js +93 -0
- package/dist/analyzers/integrity/hardcodedMatch.js.map +1 -0
- package/dist/analyzers/integrity/helpers.d.ts +21 -0
- package/dist/analyzers/integrity/helpers.js +66 -0
- package/dist/analyzers/integrity/helpers.js.map +1 -0
- package/dist/analyzers/integrity/index.d.ts +10 -0
- package/dist/analyzers/integrity/index.js +27 -0
- package/dist/analyzers/integrity/index.js.map +1 -0
- package/dist/analyzers/integrity/mockOverreach.d.ts +2 -0
- package/dist/analyzers/integrity/mockOverreach.js +72 -0
- package/dist/analyzers/integrity/mockOverreach.js.map +1 -0
- package/dist/analyzers/integrity/suppressionCreep.d.ts +2 -0
- package/dist/analyzers/integrity/suppressionCreep.js +27 -0
- package/dist/analyzers/integrity/suppressionCreep.js.map +1 -0
- package/dist/analyzers/integrity/testTamper.d.ts +2 -0
- package/dist/analyzers/integrity/testTamper.js +153 -0
- package/dist/analyzers/integrity/testTamper.js.map +1 -0
- package/dist/analyzers/integrity/types.d.ts +63 -0
- package/dist/analyzers/integrity/types.js +13 -0
- package/dist/analyzers/integrity/types.js.map +1 -0
- package/dist/analyzers/ledger/attacks.d.ts +17 -0
- package/dist/analyzers/ledger/attacks.js +135 -0
- package/dist/analyzers/ledger/attacks.js.map +1 -0
- package/dist/analyzers/ledger/discover.d.ts +15 -0
- package/dist/analyzers/ledger/discover.js +122 -0
- package/dist/analyzers/ledger/discover.js.map +1 -0
- package/dist/analyzers/ledger/evidence.d.ts +22 -0
- package/dist/analyzers/ledger/evidence.js +127 -0
- package/dist/analyzers/ledger/evidence.js.map +1 -0
- package/dist/analyzers/ledger/harness.d.ts +4 -0
- package/dist/analyzers/ledger/harness.js +270 -0
- package/dist/analyzers/ledger/harness.js.map +1 -0
- package/dist/analyzers/ledger/index.d.ts +14 -0
- package/dist/analyzers/ledger/index.js +116 -0
- package/dist/analyzers/ledger/index.js.map +1 -0
- package/dist/analyzers/ledger/types.d.ts +31 -0
- package/dist/analyzers/ledger/types.js +2 -0
- package/dist/analyzers/ledger/types.js.map +1 -0
- package/dist/analyzers/perf.d.ts +2 -0
- package/dist/analyzers/perf.js +106 -0
- package/dist/analyzers/perf.js.map +1 -0
- package/dist/analyzers/reliability.d.ts +22 -0
- package/dist/analyzers/reliability.js +339 -0
- package/dist/analyzers/reliability.js.map +1 -0
- package/dist/analyzers/routes.d.ts +17 -0
- package/dist/analyzers/routes.js +115 -0
- package/dist/analyzers/routes.js.map +1 -0
- package/dist/analyzers/security.d.ts +2 -0
- package/dist/analyzers/security.js +302 -0
- package/dist/analyzers/security.js.map +1 -0
- package/dist/analyzers/suiteRunner.d.ts +64 -0
- package/dist/analyzers/suiteRunner.js +381 -0
- package/dist/analyzers/suiteRunner.js.map +1 -0
- package/dist/analyzers/tests.d.ts +2 -0
- package/dist/analyzers/tests.js +215 -0
- package/dist/analyzers/tests.js.map +1 -0
- package/dist/analyzers/types.d.ts +203 -0
- package/dist/analyzers/types.js +2 -0
- package/dist/analyzers/types.js.map +1 -0
- package/dist/analyzers/util.d.ts +35 -0
- package/dist/analyzers/util.js +209 -0
- package/dist/analyzers/util.js.map +1 -0
- package/dist/ciCheckA.d.ts +2 -0
- package/dist/ciCheckA.js +5 -0
- package/dist/ciCheckA.js.map +1 -0
- package/dist/ciCheckB.d.ts +2 -0
- package/dist/ciCheckB.js +6 -0
- package/dist/ciCheckB.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/budget.d.ts +33 -0
- package/dist/commands/budget.js +108 -0
- package/dist/commands/budget.js.map +1 -0
- package/dist/commands/ci.d.ts +14 -0
- package/dist/commands/ci.js +157 -0
- package/dist/commands/ci.js.map +1 -0
- package/dist/commands/demo.d.ts +2 -0
- package/dist/commands/demo.js +163 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/digest.d.ts +8 -0
- package/dist/commands/digest.js +189 -0
- package/dist/commands/digest.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +98 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/drive.d.ts +3 -0
- package/dist/commands/drive.js +170 -0
- package/dist/commands/drive.js.map +1 -0
- package/dist/commands/gate.d.ts +2 -0
- package/dist/commands/gate.js +136 -0
- package/dist/commands/gate.js.map +1 -0
- package/dist/commands/honesty.d.ts +2 -0
- package/dist/commands/honesty.js +182 -0
- package/dist/commands/honesty.js.map +1 -0
- package/dist/commands/inspect.d.ts +2 -0
- package/dist/commands/inspect.js +244 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.js +81 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/integrity.d.ts +2 -0
- package/dist/commands/integrity.js +74 -0
- package/dist/commands/integrity.js.map +1 -0
- package/dist/commands/memory.d.ts +6 -0
- package/dist/commands/memory.js +90 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/pen.d.ts +17 -0
- package/dist/commands/pen.js +158 -0
- package/dist/commands/pen.js.map +1 -0
- package/dist/commands/prompt.d.ts +2 -0
- package/dist/commands/prompt.js +37 -0
- package/dist/commands/prompt.js.map +1 -0
- package/dist/commands/readyCheck.d.ts +21 -0
- package/dist/commands/readyCheck.js +68 -0
- package/dist/commands/readyCheck.js.map +1 -0
- package/dist/commands/report.d.ts +2 -0
- package/dist/commands/report.js +48 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/repro.d.ts +3 -0
- package/dist/commands/repro.js +61 -0
- package/dist/commands/repro.js.map +1 -0
- package/dist/commands/scan.d.ts +27 -0
- package/dist/commands/scan.js +348 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/share.d.ts +2 -0
- package/dist/commands/share.js +163 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/trends.d.ts +2 -0
- package/dist/commands/trends.js +103 -0
- package/dist/commands/trends.js.map +1 -0
- package/dist/commands/try.d.ts +12 -0
- package/dist/commands/try.js +208 -0
- package/dist/commands/try.js.map +1 -0
- package/dist/commands/verify.d.ts +44 -0
- package/dist/commands/verify.js +381 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/watch.d.ts +10 -0
- package/dist/commands/watch.js +70 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/evidence.d.ts +37 -0
- package/dist/evidence.js +61 -0
- package/dist/evidence.js.map +1 -0
- package/dist/graph/correlate.d.ts +7 -0
- package/dist/graph/correlate.js +246 -0
- package/dist/graph/correlate.js.map +1 -0
- package/dist/graph/integrity.d.ts +22 -0
- package/dist/graph/integrity.js +39 -0
- package/dist/graph/integrity.js.map +1 -0
- package/dist/installer/targets.d.ts +23 -0
- package/dist/installer/targets.js +162 -0
- package/dist/installer/targets.js.map +1 -0
- package/dist/memory/store.d.ts +33 -0
- package/dist/memory/store.js +131 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/pen/dynamic.d.ts +36 -0
- package/dist/pen/dynamic.js +622 -0
- package/dist/pen/dynamic.js.map +1 -0
- package/dist/pen/fix.d.ts +35 -0
- package/dist/pen/fix.js +239 -0
- package/dist/pen/fix.js.map +1 -0
- package/dist/pen/proof.d.ts +46 -0
- package/dist/pen/proof.js +112 -0
- package/dist/pen/proof.js.map +1 -0
- package/dist/pen/report.d.ts +11 -0
- package/dist/pen/report.js +258 -0
- package/dist/pen/report.js.map +1 -0
- package/dist/pen/static.d.ts +17 -0
- package/dist/pen/static.js +565 -0
- package/dist/pen/static.js.map +1 -0
- package/dist/pen/store.d.ts +11 -0
- package/dist/pen/store.js +36 -0
- package/dist/pen/store.js.map +1 -0
- package/dist/pen/types.d.ts +112 -0
- package/dist/pen/types.js +53 -0
- package/dist/pen/types.js.map +1 -0
- package/dist/report/format.d.ts +126 -0
- package/dist/report/format.js +706 -0
- package/dist/report/format.js.map +1 -0
- package/dist/report/score.d.ts +47 -0
- package/dist/report/score.js +164 -0
- package/dist/report/score.js.map +1 -0
- package/dist/repro/framework.d.ts +26 -0
- package/dist/repro/framework.js +224 -0
- package/dist/repro/framework.js.map +1 -0
- package/dist/repro/generate.d.ts +14 -0
- package/dist/repro/generate.js +669 -0
- package/dist/repro/generate.js.map +1 -0
- package/dist/repro/ids.d.ts +32 -0
- package/dist/repro/ids.js +175 -0
- package/dist/repro/ids.js.map +1 -0
- package/dist/repro/index.d.ts +24 -0
- package/dist/repro/index.js +69 -0
- package/dist/repro/index.js.map +1 -0
- package/dist/repro/pen.d.ts +26 -0
- package/dist/repro/pen.js +321 -0
- package/dist/repro/pen.js.map +1 -0
- package/dist/repro/run.d.ts +18 -0
- package/dist/repro/run.js +36 -0
- package/dist/repro/run.js.map +1 -0
- package/dist/sandbox/proxy.d.ts +41 -0
- package/dist/sandbox/proxy.js +231 -0
- package/dist/sandbox/proxy.js.map +1 -0
- package/dist/sandbox/startCmd.d.ts +24 -0
- package/dist/sandbox/startCmd.js +71 -0
- package/dist/sandbox/startCmd.js.map +1 -0
- package/dist/ui/spinner.d.ts +18 -0
- package/dist/ui/spinner.js +26 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/verify/metrics.d.ts +13 -0
- package/dist/verify/metrics.js +72 -0
- package/dist/verify/metrics.js.map +1 -0
- package/package.json +68 -0
- package/scripts/cheat-demo.cjs +102 -0
- package/templates/ledger/preload.cjs +331 -0
- package/templates/pen/preload.cjs +196 -0
- package/templates/pitstop.prompt.md +371 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ScanResult } from "../analyzers/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* score.ts — the OpenPitStop Score.
|
|
4
|
+
*
|
|
5
|
+
* Every scan collapses into a single 0–100 health score, weighted across the
|
|
6
|
+
* categories that actually ran (skipped categories are excluded and the weights
|
|
7
|
+
* renormalized, so a missing jscpd never silently tanks the number). The score
|
|
8
|
+
* powers the box's headline line, the verify Δ, the report, and the README
|
|
9
|
+
* badge.
|
|
10
|
+
*/
|
|
11
|
+
export interface CategoryScore {
|
|
12
|
+
key: string;
|
|
13
|
+
label: string;
|
|
14
|
+
/** 0..100 category health. */
|
|
15
|
+
score: number;
|
|
16
|
+
/** Relative weight used in the weighted average. */
|
|
17
|
+
weight: number;
|
|
18
|
+
status: "ok" | "skipped";
|
|
19
|
+
note?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ScoreResult {
|
|
22
|
+
/** 0..100 composite (0 if no category could run). */
|
|
23
|
+
score: number;
|
|
24
|
+
/** A+ .. F from score. */
|
|
25
|
+
grade: string;
|
|
26
|
+
categories: CategoryScore[];
|
|
27
|
+
/** Categories that actually ran and counted. */
|
|
28
|
+
analyzed: number;
|
|
29
|
+
/** Total categories the model knows about. */
|
|
30
|
+
total: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function gradeOf(score: number): string;
|
|
33
|
+
/** Hex color for the SVG badge segment. */
|
|
34
|
+
export declare function gradeHex(grade: string): string;
|
|
35
|
+
/** Terminal/Light color name for the grade (MetricLine.color). */
|
|
36
|
+
export declare function gradeColor(grade: string): "green" | "yellow" | "red";
|
|
37
|
+
export declare function penalty100(issues: {
|
|
38
|
+
severity: string;
|
|
39
|
+
}[]): number;
|
|
40
|
+
export declare function scoreCategories(r: ScanResult): CategoryScore[];
|
|
41
|
+
export interface ScoreOptions {
|
|
42
|
+
/** Integrity-gate penalty (25 for confirmed cheat, 10 for suspicious). */
|
|
43
|
+
integrityPenalty?: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function computeScore(r: ScanResult, opts?: ScoreOptions): ScoreResult;
|
|
46
|
+
/** Shield-style SVG badge, single file, no external assets — README-ready. */
|
|
47
|
+
export declare function renderBadgeSvg(s: ScoreResult): string;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const GRADE_BANDS = [
|
|
2
|
+
[95, "A+"], [90, "A"], [85, "A-"], [80, "B+"], [75, "B"], [70, "B-"],
|
|
3
|
+
[65, "C+"], [60, "C"], [55, "C-"], [50, "D"], [0, "F"],
|
|
4
|
+
];
|
|
5
|
+
export function gradeOf(score) {
|
|
6
|
+
for (const [min, g] of GRADE_BANDS)
|
|
7
|
+
if (score >= min)
|
|
8
|
+
return g;
|
|
9
|
+
return "F";
|
|
10
|
+
}
|
|
11
|
+
/** Hex color for the SVG badge segment. */
|
|
12
|
+
export function gradeHex(grade) {
|
|
13
|
+
switch (grade[0]) {
|
|
14
|
+
case "A": return "#4CAF50";
|
|
15
|
+
case "B": return "#8BC34A";
|
|
16
|
+
case "C": return "#FFC107";
|
|
17
|
+
case "D": return "#FF9800";
|
|
18
|
+
default: return "#E53935";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Terminal/Light color name for the grade (MetricLine.color). */
|
|
22
|
+
export function gradeColor(grade) {
|
|
23
|
+
switch (grade[0]) {
|
|
24
|
+
case "A": return "green";
|
|
25
|
+
case "B":
|
|
26
|
+
case "C": return "yellow";
|
|
27
|
+
default: return "red";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const sevPenalty = (sev) => {
|
|
31
|
+
switch (sev) {
|
|
32
|
+
case "critical": return 25;
|
|
33
|
+
case "high": return 12;
|
|
34
|
+
case "medium": return 5;
|
|
35
|
+
case "low": return 2;
|
|
36
|
+
case "warning": return 2;
|
|
37
|
+
default: return 3;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const clamp = (n) => Math.max(0, Math.min(100, Math.round(n)));
|
|
41
|
+
export function penalty100(issues) {
|
|
42
|
+
let sum = 0;
|
|
43
|
+
for (const i of issues)
|
|
44
|
+
sum += sevPenalty(i.severity);
|
|
45
|
+
return clamp(100 - sum);
|
|
46
|
+
}
|
|
47
|
+
export function scoreCategories(r) {
|
|
48
|
+
const cats = [];
|
|
49
|
+
const sec = r.security;
|
|
50
|
+
if (sec.status === "ok") {
|
|
51
|
+
cats.push({ key: "security", label: "Security", weight: 22, score: penalty100(sec.issues), status: "ok" });
|
|
52
|
+
}
|
|
53
|
+
const t = r.tests;
|
|
54
|
+
if (t.status === "ok") {
|
|
55
|
+
let s;
|
|
56
|
+
if (t.total === 0) {
|
|
57
|
+
s = 70; // no tests → neutral baseline, not a pass
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
s = Math.round((100 * t.passed) / t.total);
|
|
61
|
+
// Broken tests cap the score regardless of pass ratio — a red suite is red.
|
|
62
|
+
if (t.failed > 0)
|
|
63
|
+
s = Math.min(s, 50);
|
|
64
|
+
if (t.coverage != null)
|
|
65
|
+
s += t.coverage >= 80 ? 10 : t.coverage >= 60 ? 5 : 0;
|
|
66
|
+
s = clamp(s);
|
|
67
|
+
}
|
|
68
|
+
cats.push({ key: "tests", label: "Tests", weight: 20, score: s, status: "ok" });
|
|
69
|
+
}
|
|
70
|
+
const dg = r.dependencyGraph;
|
|
71
|
+
if (dg.status === "ok") {
|
|
72
|
+
cats.push({
|
|
73
|
+
key: "graph",
|
|
74
|
+
label: "Dependency graph",
|
|
75
|
+
weight: 10,
|
|
76
|
+
score: clamp(100 - dg.circular.length * 15 - dg.orphans.length),
|
|
77
|
+
status: "ok",
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const dup = r.duplication;
|
|
81
|
+
if (dup.status === "ok") {
|
|
82
|
+
cats.push({ key: "duplication", label: "Duplication", weight: 10, score: clamp(100 - dup.cloneCount * 8), status: "ok" });
|
|
83
|
+
}
|
|
84
|
+
const p = r.perf;
|
|
85
|
+
if (p.status === "ok") {
|
|
86
|
+
let s = 80;
|
|
87
|
+
if (p.buildTimeMs != null)
|
|
88
|
+
s = p.buildTimeMs < 10_000 ? 100 : p.buildTimeMs < 30_000 ? 80 : p.buildTimeMs < 60_000 ? 60 : 40;
|
|
89
|
+
if (p.bundleSizeBytes != null && p.bundleSizeBytes > 512 * 1024)
|
|
90
|
+
s -= 20;
|
|
91
|
+
cats.push({ key: "perf", label: "Performance", weight: 10, score: clamp(s), status: "ok" });
|
|
92
|
+
}
|
|
93
|
+
const a = r.accessibility;
|
|
94
|
+
if (a.status === "ok") {
|
|
95
|
+
cats.push({ key: "a11y", label: "Accessibility", weight: 10, score: penalty100(a.issues), status: "ok" });
|
|
96
|
+
}
|
|
97
|
+
const rel = r.reliability;
|
|
98
|
+
if (rel.status === "ok") {
|
|
99
|
+
cats.push({
|
|
100
|
+
key: "reliability",
|
|
101
|
+
label: "Reliability",
|
|
102
|
+
weight: 8,
|
|
103
|
+
score: clamp(100 - rel.flakyTests.length * 15 - rel.raceSmells.length * 8),
|
|
104
|
+
status: "ok",
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const dx = r.devex;
|
|
108
|
+
if (dx.status === "ok") {
|
|
109
|
+
cats.push({
|
|
110
|
+
key: "devex",
|
|
111
|
+
label: "DevEx",
|
|
112
|
+
weight: 5,
|
|
113
|
+
score: clamp(100 - dx.unusedExports.length * 3 - dx.duplicateFunctions.length * 5),
|
|
114
|
+
status: "ok",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
const lg = r.ledger;
|
|
118
|
+
if (lg && lg.status === "ok") {
|
|
119
|
+
const charged = lg.evidence.filter((e) => e.doubleCharged).length;
|
|
120
|
+
cats.push({
|
|
121
|
+
key: "ledger",
|
|
122
|
+
label: "Ledger idempotency",
|
|
123
|
+
weight: 5,
|
|
124
|
+
score: charged > 0 ? 0 : 100,
|
|
125
|
+
status: "ok",
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return cats;
|
|
129
|
+
}
|
|
130
|
+
export function computeScore(r, opts = {}) {
|
|
131
|
+
const categories = scoreCategories(r);
|
|
132
|
+
const included = categories.filter((c) => c.status === "ok");
|
|
133
|
+
const totalWeight = included.reduce((s, c) => s + c.weight, 0);
|
|
134
|
+
let score = 0;
|
|
135
|
+
if (totalWeight > 0) {
|
|
136
|
+
score = included.reduce((s, c) => s + c.score * c.weight, 0) / totalWeight;
|
|
137
|
+
}
|
|
138
|
+
if (opts.integrityPenalty)
|
|
139
|
+
score -= opts.integrityPenalty;
|
|
140
|
+
score = Math.max(0, Math.min(100, Math.round(score)));
|
|
141
|
+
return { score, grade: gradeOf(score), categories, analyzed: included.length, total: categories.length };
|
|
142
|
+
}
|
|
143
|
+
/** Shield-style SVG badge, single file, no external assets — README-ready. */
|
|
144
|
+
export function renderBadgeSvg(s) {
|
|
145
|
+
const color = gradeHex(s.grade);
|
|
146
|
+
const left = "PITSTOP";
|
|
147
|
+
const right = `${s.score}/100 ${s.grade}`;
|
|
148
|
+
const wLeft = Math.round(left.length * 7.4 + 14);
|
|
149
|
+
const wRight = Math.round(right.length * 7.4 + 14);
|
|
150
|
+
const w = wLeft + wRight;
|
|
151
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="20" role="img" aria-label="OpenPitStop score ${s.score}/100 (${s.grade})">
|
|
152
|
+
<linearGradient id="g" x1="0" y1="0" x2="1" y2="0">
|
|
153
|
+
<stop offset="0%" stop-color="#5c5c5c" stop-opacity="0.95"/>
|
|
154
|
+
<stop offset="100%" stop-color="#3a3a3a" stop-opacity="0.95"/>
|
|
155
|
+
</linearGradient>
|
|
156
|
+
<rect width="${w}" height="20" rx="3" fill="url(#g)"/>
|
|
157
|
+
<rect x="${wLeft}" width="${wRight}" height="20" fill="${color}"/>
|
|
158
|
+
<g fill="#fff" font-family="Verdana,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">
|
|
159
|
+
<text x="${wLeft / 2}" y="14">${left}</text>
|
|
160
|
+
<text x="${wLeft + wRight / 2}" y="14">${right}</text>
|
|
161
|
+
</g>
|
|
162
|
+
</svg>`;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/report/score.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type TestFramework = "jest" | "vitest" | "node-test" | "pytest" | "go" | "cargo" | "flutter" | "dotnet" | "maven" | "gradle";
|
|
2
|
+
/**
|
|
3
|
+
* framework.ts — figure out how the target repo runs tests, and run a single
|
|
4
|
+
* repro test file through that runner. OpenPitStop never invents a test setup; it
|
|
5
|
+
* uses whatever the repo already has (jest/vitest/pytest), falling back to
|
|
6
|
+
* Node's built-in `node --test` for JS repos with no framework (zero deps).
|
|
7
|
+
* For non-Node stacks the native runner is used: `go test` for a standalone
|
|
8
|
+
* repro `_test.go`, `cargo test --test <name>` for a tests/ integration test,
|
|
9
|
+
* `flutter test <file>` for a `*_test.dart`, and the full `dotnet test` /
|
|
10
|
+
* `mvn test` / gradle `test` for projects (those runners have no single-file
|
|
11
|
+
* mode, so a repro there exercises the whole suite).
|
|
12
|
+
*/
|
|
13
|
+
export declare function detectTestFramework(repo: string): TestFramework | null;
|
|
14
|
+
export interface RunResult {
|
|
15
|
+
code: number;
|
|
16
|
+
stdout: string;
|
|
17
|
+
stderr: string;
|
|
18
|
+
timedOut: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Extension for a repro test file in this repo's framework. */
|
|
21
|
+
export declare function reproExtension(framework: TestFramework): string;
|
|
22
|
+
/** Where generated repro files must live so the native runner picks them up. */
|
|
23
|
+
export declare function reproDir(framework: TestFramework): string;
|
|
24
|
+
/** Run a single test file and report pass/fail. */
|
|
25
|
+
export declare function runTestFile(repo: string, file: string, extraEnv?: Record<string, string>, timeoutMs?: number): Promise<RunResult>;
|
|
26
|
+
export declare function frameworkLabel(framework: TestFramework | null): string;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { execa } from "execa";
|
|
4
|
+
import { walkFiles } from "../analyzers/util.js";
|
|
5
|
+
/**
|
|
6
|
+
* framework.ts — figure out how the target repo runs tests, and run a single
|
|
7
|
+
* repro test file through that runner. OpenPitStop never invents a test setup; it
|
|
8
|
+
* uses whatever the repo already has (jest/vitest/pytest), falling back to
|
|
9
|
+
* Node's built-in `node --test` for JS repos with no framework (zero deps).
|
|
10
|
+
* For non-Node stacks the native runner is used: `go test` for a standalone
|
|
11
|
+
* repro `_test.go`, `cargo test --test <name>` for a tests/ integration test,
|
|
12
|
+
* `flutter test <file>` for a `*_test.dart`, and the full `dotnet test` /
|
|
13
|
+
* `mvn test` / gradle `test` for projects (those runners have no single-file
|
|
14
|
+
* mode, so a repro there exercises the whole suite).
|
|
15
|
+
*/
|
|
16
|
+
export function detectTestFramework(repo) {
|
|
17
|
+
const pkgPath = path.join(repo, "package.json");
|
|
18
|
+
if (fs.existsSync(pkgPath)) {
|
|
19
|
+
let pkg = {};
|
|
20
|
+
try {
|
|
21
|
+
pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
pkg = {};
|
|
25
|
+
}
|
|
26
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
27
|
+
if (deps.jest)
|
|
28
|
+
return "jest";
|
|
29
|
+
if (deps.vitest)
|
|
30
|
+
return "vitest";
|
|
31
|
+
return "node-test";
|
|
32
|
+
}
|
|
33
|
+
if (fs.existsSync(path.join(repo, "requirements.txt")) ||
|
|
34
|
+
fs.existsSync(path.join(repo, "pyproject.toml")) ||
|
|
35
|
+
fs.existsSync(path.join(repo, "setup.py"))) {
|
|
36
|
+
return "pytest";
|
|
37
|
+
}
|
|
38
|
+
if (fs.existsSync(path.join(repo, "go.mod")))
|
|
39
|
+
return "go";
|
|
40
|
+
if (fs.existsSync(path.join(repo, "Cargo.toml")))
|
|
41
|
+
return "cargo";
|
|
42
|
+
if (fs.existsSync(path.join(repo, "pubspec.yaml")) ||
|
|
43
|
+
fs.existsSync(path.join(repo, "pubspec.lock"))) {
|
|
44
|
+
return "flutter";
|
|
45
|
+
}
|
|
46
|
+
if (walkFiles(repo, [".csproj", ".fsproj", ".vbproj"]).length > 0)
|
|
47
|
+
return "dotnet";
|
|
48
|
+
if (fs.existsSync(path.join(repo, "pom.xml")))
|
|
49
|
+
return "maven";
|
|
50
|
+
if (fs.existsSync(path.join(repo, "build.gradle")) ||
|
|
51
|
+
fs.existsSync(path.join(repo, "build.gradle.kts"))) {
|
|
52
|
+
return "gradle";
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/** Extension for a repro test file in this repo's framework. */
|
|
57
|
+
export function reproExtension(framework) {
|
|
58
|
+
switch (framework) {
|
|
59
|
+
case "jest":
|
|
60
|
+
case "vitest":
|
|
61
|
+
return ".test.js";
|
|
62
|
+
case "node-test":
|
|
63
|
+
return ".test.mjs";
|
|
64
|
+
case "pytest":
|
|
65
|
+
return ".py";
|
|
66
|
+
case "go":
|
|
67
|
+
return "_test.go";
|
|
68
|
+
case "flutter":
|
|
69
|
+
return "_test.dart";
|
|
70
|
+
case "cargo":
|
|
71
|
+
return ".rs";
|
|
72
|
+
case "dotnet":
|
|
73
|
+
return ".cs";
|
|
74
|
+
case "maven":
|
|
75
|
+
case "gradle":
|
|
76
|
+
return ".java";
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Where generated repro files must live so the native runner picks them up. */
|
|
80
|
+
export function reproDir(framework) {
|
|
81
|
+
if (framework === "cargo")
|
|
82
|
+
return "tests";
|
|
83
|
+
if (framework === "flutter")
|
|
84
|
+
return "test";
|
|
85
|
+
if (framework === "go")
|
|
86
|
+
return "pitstoprepro";
|
|
87
|
+
return "";
|
|
88
|
+
}
|
|
89
|
+
/** Run a single test file and report pass/fail. */
|
|
90
|
+
export async function runTestFile(repo, file, extraEnv = {}, timeoutMs = 120000) {
|
|
91
|
+
const framework = detectTestFramework(repo);
|
|
92
|
+
const env = { ...process.env, ...extraEnv };
|
|
93
|
+
// jest/vitest resolve test paths against their rootDir (cwd = repo), so a
|
|
94
|
+
// repo-relative path is required: an absolute path with Windows 8.3 short
|
|
95
|
+
// segments (e.g. KRISH_~1) does not match rootDir and yields "No tests found".
|
|
96
|
+
const rel = path.relative(repo, file);
|
|
97
|
+
let cmd;
|
|
98
|
+
let args;
|
|
99
|
+
const local = (r) => path.join(repo, r);
|
|
100
|
+
switch (framework) {
|
|
101
|
+
case "jest": {
|
|
102
|
+
// Prefer the repo's own jest binary (like the reliability analyzer does)
|
|
103
|
+
// to avoid npx/.cmd resolution issues on Windows.
|
|
104
|
+
const jestBin = local("node_modules/jest/bin/jest.js");
|
|
105
|
+
if (fs.existsSync(jestBin)) {
|
|
106
|
+
cmd = "node";
|
|
107
|
+
args = [jestBin, rel, "--runInBand", "--runTestsByPath"];
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
cmd = "npx";
|
|
111
|
+
args = ["jest", rel, "--runInBand", "--runTestsByPath"];
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case "vitest": {
|
|
116
|
+
const vitestBin = local("node_modules/vitest/vitest.mjs");
|
|
117
|
+
if (fs.existsSync(vitestBin)) {
|
|
118
|
+
cmd = "node";
|
|
119
|
+
args = [vitestBin, "run", rel, "--reporter=basic"];
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
cmd = "npx";
|
|
123
|
+
args = ["vitest", "run", rel, "--reporter=basic"];
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case "pytest": {
|
|
128
|
+
cmd = "python";
|
|
129
|
+
args = ["-m", "pytest", file, "-q"];
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case "go": {
|
|
133
|
+
// A standalone `_test.go` is a complete package on its own, so `go test
|
|
134
|
+
// <file>` compiles just that file against the module.
|
|
135
|
+
cmd = "go";
|
|
136
|
+
args = ["test", file];
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case "cargo": {
|
|
140
|
+
const name = path.basename(file).replace(/\.rs$/, "");
|
|
141
|
+
cmd = "cargo";
|
|
142
|
+
args = ["test", "--test", name];
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case "flutter": {
|
|
146
|
+
cmd = "flutter";
|
|
147
|
+
args = ["test", file];
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case "dotnet": {
|
|
151
|
+
// dotnet test has no single-file mode — a repro here runs the whole suite.
|
|
152
|
+
cmd = "dotnet";
|
|
153
|
+
args = ["test"];
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case "maven": {
|
|
157
|
+
cmd = "mvn";
|
|
158
|
+
args = ["test"];
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case "gradle": {
|
|
162
|
+
const wrapperName = process.platform === "win32" ? "gradlew.bat" : "gradlew";
|
|
163
|
+
const wrapper = path.join(repo, wrapperName);
|
|
164
|
+
cmd = fs.existsSync(wrapper) ? wrapper : "gradle";
|
|
165
|
+
args = ["test"];
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case "node-test":
|
|
169
|
+
default: {
|
|
170
|
+
cmd = "node";
|
|
171
|
+
args = ["--test", file];
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// execa resolves PATH/PATHEXT correctly on Windows (npx.cmd, node.exe,
|
|
176
|
+
// python.exe) and collects stdout/stderr with a native timeout.
|
|
177
|
+
try {
|
|
178
|
+
const res = await execa(cmd, args, {
|
|
179
|
+
cwd: repo,
|
|
180
|
+
env,
|
|
181
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
182
|
+
windowsHide: true,
|
|
183
|
+
timeout: timeoutMs,
|
|
184
|
+
reject: false,
|
|
185
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
code: typeof res.exitCode === "number" ? res.exitCode : -1,
|
|
189
|
+
stdout: res.stdout ?? "",
|
|
190
|
+
stderr: res.stderr ?? "",
|
|
191
|
+
timedOut: res.timedOut ?? false,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
return { code: -1, stdout: "", stderr: err?.message ?? String(err), timedOut: false };
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
export function frameworkLabel(framework) {
|
|
199
|
+
switch (framework) {
|
|
200
|
+
case "jest":
|
|
201
|
+
return "jest";
|
|
202
|
+
case "vitest":
|
|
203
|
+
return "vitest";
|
|
204
|
+
case "pytest":
|
|
205
|
+
return "pytest";
|
|
206
|
+
case "node-test":
|
|
207
|
+
return "node --test (built-in)";
|
|
208
|
+
case "go":
|
|
209
|
+
return "go test";
|
|
210
|
+
case "cargo":
|
|
211
|
+
return "cargo test";
|
|
212
|
+
case "flutter":
|
|
213
|
+
return "flutter test";
|
|
214
|
+
case "dotnet":
|
|
215
|
+
return "dotnet test";
|
|
216
|
+
case "maven":
|
|
217
|
+
return "maven (surefire)";
|
|
218
|
+
case "gradle":
|
|
219
|
+
return "gradle";
|
|
220
|
+
default:
|
|
221
|
+
return "unknown";
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=framework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/repro/framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ScanResult } from "../analyzers/types.js";
|
|
2
|
+
import { type TestFramework } from "./framework.js";
|
|
3
|
+
import { type ReproFinding } from "./ids.js";
|
|
4
|
+
export interface ReproOutcome {
|
|
5
|
+
ok: boolean;
|
|
6
|
+
/** Relative path of the written test file (from the repo root). */
|
|
7
|
+
file?: string;
|
|
8
|
+
/** Human reason when the generator refuses to fabricate a test. */
|
|
9
|
+
reason?: string;
|
|
10
|
+
framework?: TestFramework;
|
|
11
|
+
}
|
|
12
|
+
declare const preloadPath: () => string;
|
|
13
|
+
export declare function generateRepro(repo: string, scan: ScanResult, finding: ReproFinding): ReproOutcome;
|
|
14
|
+
export { preloadPath };
|