@eviano/tribunal 0.1.2 → 0.2.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/README.md +177 -11
- package/dist/analyzers/claimReconciliation.js +43 -22
- package/dist/analyzers/claimReconciliation.js.map +1 -1
- package/dist/analyzers/commentCodeDrift.d.ts +37 -0
- package/dist/analyzers/commentCodeDrift.js +241 -0
- package/dist/analyzers/commentCodeDrift.js.map +1 -0
- package/dist/analyzers/hallucinatedSymbol.js +22 -0
- package/dist/analyzers/hallucinatedSymbol.js.map +1 -1
- package/dist/analyzers/index.d.ts +5 -1
- package/dist/analyzers/index.js +12 -2
- package/dist/analyzers/index.js.map +1 -1
- package/dist/analyzers/riskyDiffNoTest.d.ts +36 -0
- package/dist/analyzers/riskyDiffNoTest.js +221 -0
- package/dist/analyzers/riskyDiffNoTest.js.map +1 -0
- package/dist/cli.js +167 -24
- package/dist/cli.js.map +1 -1
- package/dist/config/loadConfig.d.ts +19 -0
- package/dist/config/loadConfig.js +89 -0
- package/dist/config/loadConfig.js.map +1 -0
- package/dist/config/parseYaml.d.ts +17 -0
- package/dist/config/parseYaml.js +131 -0
- package/dist/config/parseYaml.js.map +1 -0
- package/dist/config/types.d.ts +17 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/diff/parseUnifiedDiff.d.ts +4 -0
- package/dist/diff/parseUnifiedDiff.js +45 -18
- package/dist/diff/parseUnifiedDiff.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/paths.d.ts +27 -0
- package/dist/paths.js +112 -0
- package/dist/paths.js.map +1 -0
- package/dist/propose.d.ts +103 -0
- package/dist/propose.js +175 -0
- package/dist/propose.js.map +1 -0
- package/dist/report/render.d.ts +5 -0
- package/dist/report/render.js +78 -0
- package/dist/report/render.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,6 +21,24 @@ import { dirname, isAbsolute, resolve } from 'node:path';
|
|
|
21
21
|
const SOURCE_EXT_RE = /\.[cm]?[jt]sx?$/i;
|
|
22
22
|
const JS_EXT_RE = /\.[cm]?jsx?$/i;
|
|
23
23
|
const MAX_REEXPORT_DEPTH = 4;
|
|
24
|
+
/**
|
|
25
|
+
* Node.js built-in modules. These are environment-provided and never "unresolved" — flagging them
|
|
26
|
+
* (which happens whenever the target repo has no resolvable node_modules on the runner) is pure noise,
|
|
27
|
+
* so they're skipped before the resolution-failed branch. Covers both the `node:` prefix (preferred)
|
|
28
|
+
* and the legacy bare form.
|
|
29
|
+
*/
|
|
30
|
+
const NODE_BUILTINS = new Set([
|
|
31
|
+
'assert', 'async_hooks', 'buffer', 'child_process', 'cluster', 'console', 'constants', 'crypto',
|
|
32
|
+
'dgram', 'diagnostics_channel', 'dns', 'domain', 'events', 'fs', 'http', 'http2', 'https', 'inspector',
|
|
33
|
+
'module', 'net', 'os', 'path', 'perf_hooks', 'process', 'punycode', 'querystring', 'readline', 'repl',
|
|
34
|
+
'stream', 'string_decoder', 'sys', 'test', 'timers', 'tls', 'trace_events', 'tty', 'url', 'util',
|
|
35
|
+
'v8', 'vm', 'wasi', 'worker_threads', 'zlib',
|
|
36
|
+
]);
|
|
37
|
+
function isNodeBuiltin(spec) {
|
|
38
|
+
if (spec.startsWith('node:'))
|
|
39
|
+
return true;
|
|
40
|
+
return NODE_BUILTINS.has(spec);
|
|
41
|
+
}
|
|
24
42
|
function scriptKindForPath(path) {
|
|
25
43
|
if (/\.tsx$/i.test(path))
|
|
26
44
|
return ts.ScriptKind.TSX;
|
|
@@ -175,6 +193,10 @@ function checkFile(sf, filePath, addedLines, absFile, r) {
|
|
|
175
193
|
if (!overlaps(addedLines, start, end))
|
|
176
194
|
continue;
|
|
177
195
|
const spec = stmt.moduleSpecifier.text;
|
|
196
|
+
// Node.js built-ins are environment-provided; never flag them as unresolved (pure noise on a runner
|
|
197
|
+
// without node_modules). This covers `node:fs`, `node:crypto`, and the bare `fs`/`path`/etc. form.
|
|
198
|
+
if (isNodeBuiltin(spec))
|
|
199
|
+
continue;
|
|
178
200
|
const isRelative = spec.startsWith('.') || isAbsolute(spec);
|
|
179
201
|
const resolved = resolveModule(spec, absFile, r);
|
|
180
202
|
if (!resolved) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hallucinatedSymbol.js","sourceRoot":"","sources":["../../src/analyzers/hallucinatedSymbol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hallucinatedSymbol.js","sourceRoot":"","sources":["../../src/analyzers/hallucinatedSymbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,12 @@ import type { Analyzer } from '../types.js';
|
|
|
2
2
|
import { assertionFreeTest } from './assertionFreeTest.js';
|
|
3
3
|
import { hallucinatedSymbol } from './hallucinatedSymbol.js';
|
|
4
4
|
import { claimReconciliation } from './claimReconciliation.js';
|
|
5
|
+
import { riskyDiffNoTest } from './riskyDiffNoTest.js';
|
|
6
|
+
import { commentCodeDrift } from './commentCodeDrift.js';
|
|
5
7
|
/**
|
|
6
8
|
* The analyzer registry. Analyzers are independent and side-effect free; order is display-only.
|
|
9
|
+
* `riskyDiffNoTest` and `commentCodeDrift` are UNVERIFIED-only (never CONTRADICTED) — they are signal
|
|
10
|
+
* analyzers, never a gate.
|
|
7
11
|
*/
|
|
8
12
|
export declare const analyzers: Analyzer[];
|
|
9
|
-
export { assertionFreeTest, hallucinatedSymbol, claimReconciliation };
|
|
13
|
+
export { assertionFreeTest, hallucinatedSymbol, riskyDiffNoTest, commentCodeDrift, claimReconciliation };
|
package/dist/analyzers/index.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { assertionFreeTest } from './assertionFreeTest.js';
|
|
2
2
|
import { hallucinatedSymbol } from './hallucinatedSymbol.js';
|
|
3
3
|
import { claimReconciliation } from './claimReconciliation.js';
|
|
4
|
+
import { riskyDiffNoTest } from './riskyDiffNoTest.js';
|
|
5
|
+
import { commentCodeDrift } from './commentCodeDrift.js';
|
|
4
6
|
/**
|
|
5
7
|
* The analyzer registry. Analyzers are independent and side-effect free; order is display-only.
|
|
8
|
+
* `riskyDiffNoTest` and `commentCodeDrift` are UNVERIFIED-only (never CONTRADICTED) — they are signal
|
|
9
|
+
* analyzers, never a gate.
|
|
6
10
|
*/
|
|
7
|
-
export const analyzers = [
|
|
8
|
-
|
|
11
|
+
export const analyzers = [
|
|
12
|
+
assertionFreeTest,
|
|
13
|
+
hallucinatedSymbol,
|
|
14
|
+
riskyDiffNoTest,
|
|
15
|
+
commentCodeDrift,
|
|
16
|
+
claimReconciliation,
|
|
17
|
+
];
|
|
18
|
+
export { assertionFreeTest, hallucinatedSymbol, riskyDiffNoTest, commentCodeDrift, claimReconciliation };
|
|
9
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyzers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyzers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,mBAAmB;CACpB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Analyzer } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Split an arbitrary string into lowercase tokens: camelCase / PascalCase boundaries, and any non-alnum
|
|
4
|
+
* run (`-`, `_`, `.`, `/`, etc.). `verifyPassword` → [`verify`, `password`]; `user-auth.ts` →
|
|
5
|
+
* [`user`, `auth`, `ts`]; `billing/checkout` → [`billing`, `checkout`]. We never substring-match, so
|
|
6
|
+
* `authors.ts` → [`authors`, `ts`] does NOT hit `auth` and `tokenize` does NOT hit `token`.
|
|
7
|
+
*/
|
|
8
|
+
declare function tokenize(s: string): string[];
|
|
9
|
+
declare function touchesRiskyVocab(...parts: string[]): boolean;
|
|
10
|
+
/** The basename stem without extension, used for risky↔test correlation. `auth.test.ts` → `auth`. */
|
|
11
|
+
declare function basenameStem(path: string): string;
|
|
12
|
+
/** Two stems are "correlated" when they share any non-trivial token (length ≥ 3). */
|
|
13
|
+
declare function stemsCorrelated(a: string, b: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Module-level config for the generated-path skip. Mutable so the CLI can flip it
|
|
16
|
+
* (`--no-skip-generated` / `TRIBUNAL_NO_SKIP_GENERATED=1`) and supply extra generated-path patterns
|
|
17
|
+
* (from tribunal.yml). Default: skip generated paths, no extras.
|
|
18
|
+
* (The `Analyzer.run` method is invoked detached, so a `this`-bound flag is unreliable; module-level
|
|
19
|
+
* state mirrors the existing `ctxHolder` pattern.)
|
|
20
|
+
*/
|
|
21
|
+
export declare let skipGenerated: boolean;
|
|
22
|
+
/** Extra generated-path patterns (appended to the built-ins). */
|
|
23
|
+
export declare let extraGeneratedPaths: readonly string[];
|
|
24
|
+
/** Override the generated-path skip behavior (CLI/env use). */
|
|
25
|
+
export declare function setSkipGenerated(value: boolean): void;
|
|
26
|
+
/** Set extra generated-path patterns (config use). Appended to the built-ins, never replaces them. */
|
|
27
|
+
export declare function setExtraGeneratedPaths(paths: readonly string[]): void;
|
|
28
|
+
export declare const riskyDiffNoTest: Analyzer;
|
|
29
|
+
export declare const __test__: {
|
|
30
|
+
tokenize: typeof tokenize;
|
|
31
|
+
touchesRiskyVocab: typeof touchesRiskyVocab;
|
|
32
|
+
basenameStem: typeof basenameStem;
|
|
33
|
+
stemsCorrelated: typeof stemsCorrelated;
|
|
34
|
+
RISKY_VOCAB: Set<string>;
|
|
35
|
+
};
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { assertionFreeTest } from './assertionFreeTest.js';
|
|
3
|
+
import { isGeneratedPath } from '../paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* `risky-diff-no-test` — a claim-independent *signal* analyzer that implements SPEC §3.7:
|
|
6
|
+
* "absence of a claim is not an escape hatch. For security-relevant categories (auth, defaults,
|
|
7
|
+
* exported surface), a risky diff with no asserting test is a finding regardless of whether the agent
|
|
8
|
+
* narrated anything — otherwise the dominant adversarial strategy is silence."
|
|
9
|
+
*
|
|
10
|
+
* The verdict here is a deliberate, load-bearing design choice:
|
|
11
|
+
*
|
|
12
|
+
* - This analyzer **NEVER emits CONTRADICTED.** "Is this code risky?" is a *semantic* judgement, and
|
|
13
|
+
* SPEC §3.4 forbids semantic CONTRADICTED (the false-CONTRADICTED budget is ~0). Risk is inferred
|
|
14
|
+
* from path/identifier tokens, which is a heuristic, not a syntactic certainty. So the only possible
|
|
15
|
+
* verdicts are PASS and UNVERIFIED — it is a *signal* analyzer, never a *gate*. It is therefore safe
|
|
16
|
+
* to ship under `--hard-fail`: it can never cause a false red.
|
|
17
|
+
*
|
|
18
|
+
* - 🟢 PASS — the diff touches a risky area AND adds a correlated asserting test.
|
|
19
|
+
* - 🟡 UNVERIFIED — the diff touches a risky area but adds no correlated asserting test. Loud, never
|
|
20
|
+
* blocking. A reviewer should confirm coverage; the analyzer refuses to block on a guess.
|
|
21
|
+
* - (no finding) — the diff touches no risky area.
|
|
22
|
+
*
|
|
23
|
+
* Reuses `assertionFreeTest` for test/assertion detection rather than duplicating it.
|
|
24
|
+
*/
|
|
25
|
+
/** Security-relevant vocabulary. Matched on path SEGMENTS and identifier TOKENS (never substrings). */
|
|
26
|
+
const RISKY_VOCAB = new Set([
|
|
27
|
+
'auth', 'login', 'logout', 'signin', 'signup', 'password', 'passwd', 'credential', 'secret',
|
|
28
|
+
'token', 'crypto', 'cipher', 'hash', 'hmac', 'jwt', 'session', 'cookie', 'permission', 'rbac',
|
|
29
|
+
'acl', 'privilege', 'escalate', 'admin', 'payment', 'billing', 'checkout', 'stripe', 'paypal',
|
|
30
|
+
'sql', 'injection', 'csrf', 'xss',
|
|
31
|
+
]);
|
|
32
|
+
const SOURCE_EXT_RE = /\.[cm]?[jt]sx?$/i;
|
|
33
|
+
const TEST_FILE_RE = /(^|[./\\])(test|spec)\.[cm]?[jt]sx?$/i;
|
|
34
|
+
const TEST_DIR_RE = /(^|[/\\])(__tests__|tests?)[/\\]/i;
|
|
35
|
+
function isTestPath(path) {
|
|
36
|
+
return TEST_FILE_RE.test(path) || (TEST_DIR_RE.test(path) && SOURCE_EXT_RE.test(path));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Split an arbitrary string into lowercase tokens: camelCase / PascalCase boundaries, and any non-alnum
|
|
40
|
+
* run (`-`, `_`, `.`, `/`, etc.). `verifyPassword` → [`verify`, `password`]; `user-auth.ts` →
|
|
41
|
+
* [`user`, `auth`, `ts`]; `billing/checkout` → [`billing`, `checkout`]. We never substring-match, so
|
|
42
|
+
* `authors.ts` → [`authors`, `ts`] does NOT hit `auth` and `tokenize` does NOT hit `token`.
|
|
43
|
+
*/
|
|
44
|
+
function tokenize(s) {
|
|
45
|
+
// Insert a break before each uppercase letter preceded by a lowercase letter/digit (camel/Pascal),
|
|
46
|
+
// then split on any run of non-alphanumeric characters.
|
|
47
|
+
const spaced = s.replace(/([a-z0-9])([A-Z])/g, '$1 $2');
|
|
48
|
+
return spaced.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean);
|
|
49
|
+
}
|
|
50
|
+
function touchesRiskyVocab(...parts) {
|
|
51
|
+
for (const part of parts) {
|
|
52
|
+
for (const tok of tokenize(part)) {
|
|
53
|
+
if (RISKY_VOCAB.has(tok))
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
/** The basename stem without extension, used for risky↔test correlation. `auth.test.ts` → `auth`. */
|
|
60
|
+
function basenameStem(path) {
|
|
61
|
+
const base = path.split('/').pop() ?? path;
|
|
62
|
+
const noExt = base.replace(/\.[cm]?[jt]sx?$/i, '');
|
|
63
|
+
// Strip the conventional `.test` / `.spec` suffix so `auth.test.ts` and `auth.ts` share stem `auth`.
|
|
64
|
+
return noExt.replace(/\.(test|spec)$/i, '');
|
|
65
|
+
}
|
|
66
|
+
function tokensOfStem(stem) {
|
|
67
|
+
return new Set(tokenize(stem));
|
|
68
|
+
}
|
|
69
|
+
/** Two stems are "correlated" when they share any non-trivial token (length ≥ 3). */
|
|
70
|
+
function stemsCorrelated(a, b) {
|
|
71
|
+
const ta = tokensOfStem(a);
|
|
72
|
+
for (const t of tokensOfStem(b)) {
|
|
73
|
+
if (t.length >= 3 && ta.has(t))
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
function scriptKindFor(path) {
|
|
79
|
+
if (/\.tsx$/i.test(path))
|
|
80
|
+
return ts.ScriptKind.TSX;
|
|
81
|
+
if (/\.jsx$/i.test(path))
|
|
82
|
+
return ts.ScriptKind.JSX;
|
|
83
|
+
if (/\.[cm]?ts$/i.test(path))
|
|
84
|
+
return ts.ScriptKind.TS;
|
|
85
|
+
return ts.ScriptKind.JS;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Collect identifier tokens that appear on added/modified lines of a source file, so a risky identifier
|
|
89
|
+
* (e.g. `verifyPassword`) is caught even when the file path itself is non-risky. Tokens come from
|
|
90
|
+
* Identifier and StringLiteral nodes whose source span overlaps the diff's added lines.
|
|
91
|
+
*/
|
|
92
|
+
function changedLineTokens(content, path, addedLines) {
|
|
93
|
+
if (addedLines.size === 0)
|
|
94
|
+
return [];
|
|
95
|
+
const sf = ts.createSourceFile(path, content, ts.ScriptTarget.Latest, true, scriptKindFor(path));
|
|
96
|
+
const toks = [];
|
|
97
|
+
const onLine = (pos) => {
|
|
98
|
+
const start = sf.getLineAndCharacterOfPosition(pos).line + 1;
|
|
99
|
+
return addedLines.has(start);
|
|
100
|
+
};
|
|
101
|
+
const visit = (node) => {
|
|
102
|
+
if (ts.isIdentifier(node) && onLine(node.getStart(sf))) {
|
|
103
|
+
toks.push(node.text);
|
|
104
|
+
}
|
|
105
|
+
else if ((ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) &&
|
|
106
|
+
onLine(node.getStart(sf))) {
|
|
107
|
+
toks.push(node.text);
|
|
108
|
+
}
|
|
109
|
+
ts.forEachChild(node, visit);
|
|
110
|
+
};
|
|
111
|
+
visit(sf);
|
|
112
|
+
return toks;
|
|
113
|
+
}
|
|
114
|
+
/** Find risky source files touched by the diff (path segment OR a changed-line identifier token). */
|
|
115
|
+
function findRiskyHits(ctx, skipGenerated, extras) {
|
|
116
|
+
const hits = [];
|
|
117
|
+
for (const f of ctx.changedFiles) {
|
|
118
|
+
if (f.status === 'deleted' || isTestPath(f.path))
|
|
119
|
+
continue;
|
|
120
|
+
if (!SOURCE_EXT_RE.test(f.path))
|
|
121
|
+
continue;
|
|
122
|
+
// Skip generated/build output (dist/, *.min.js, …, plus any config-supplied extras): a bundled
|
|
123
|
+
// artifact carries the project's own risky vocab and isn't human-authored source worth flagging.
|
|
124
|
+
// Disable via `skipGenerated = false`.
|
|
125
|
+
if (skipGenerated && isGeneratedPath(f.path, extras))
|
|
126
|
+
continue;
|
|
127
|
+
// 1) Path-segment match (cheap, no parse). Line = first added line if any, else 1.
|
|
128
|
+
if (touchesRiskyVocab(f.path)) {
|
|
129
|
+
const matched = tokenize(f.path).find((t) => RISKY_VOCAB.has(t));
|
|
130
|
+
const firstAdded = f.addedLines.size ? Math.min(...f.addedLines) : 1;
|
|
131
|
+
hits.push({ path: f.path, token: matched, line: firstAdded });
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
// 2) Identifier-token match on changed lines (requires parsing the file).
|
|
135
|
+
const content = ctx.readFile(f.path);
|
|
136
|
+
if (content == null)
|
|
137
|
+
continue;
|
|
138
|
+
for (const tok of changedLineTokens(content, f.path, f.addedLines)) {
|
|
139
|
+
const lower = tokenize(tok);
|
|
140
|
+
const hit = lower.find((t) => RISKY_VOCAB.has(t));
|
|
141
|
+
if (hit) {
|
|
142
|
+
hits.push({ path: f.path, token: hit, line: 1 });
|
|
143
|
+
break; // one hit per file is enough for the signal
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return hits;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Reuse the assertion-free-test analyzer to find asserting tests added by the diff, then keep only
|
|
151
|
+
* those correlated with a risky file by stem token. This avoids a misleading PASS when an unrelated
|
|
152
|
+
* test was added elsewhere in the PR.
|
|
153
|
+
*/
|
|
154
|
+
function hasCorrelatedAssertingTest(risky) {
|
|
155
|
+
const riskyStem = basenameStem(risky.path);
|
|
156
|
+
const findings = assertionFreeTest.run(ctxHolder);
|
|
157
|
+
return findings.some((f) => f.verdict === 'PASS' && stemsCorrelated(riskyStem, basenameStem(f.file)));
|
|
158
|
+
}
|
|
159
|
+
// `assertionFreeTest.run` needs the full AnalyzerContext. We pass it in via a holder because the
|
|
160
|
+
// correlation helper is called per-hit and we don't want to thread ctx through every helper.
|
|
161
|
+
let ctxHolder;
|
|
162
|
+
/**
|
|
163
|
+
* Module-level config for the generated-path skip. Mutable so the CLI can flip it
|
|
164
|
+
* (`--no-skip-generated` / `TRIBUNAL_NO_SKIP_GENERATED=1`) and supply extra generated-path patterns
|
|
165
|
+
* (from tribunal.yml). Default: skip generated paths, no extras.
|
|
166
|
+
* (The `Analyzer.run` method is invoked detached, so a `this`-bound flag is unreliable; module-level
|
|
167
|
+
* state mirrors the existing `ctxHolder` pattern.)
|
|
168
|
+
*/
|
|
169
|
+
export let skipGenerated = true;
|
|
170
|
+
/** Extra generated-path patterns (appended to the built-ins). */
|
|
171
|
+
export let extraGeneratedPaths = [];
|
|
172
|
+
/** Override the generated-path skip behavior (CLI/env use). */
|
|
173
|
+
export function setSkipGenerated(value) {
|
|
174
|
+
skipGenerated = value;
|
|
175
|
+
}
|
|
176
|
+
/** Set extra generated-path patterns (config use). Appended to the built-ins, never replaces them. */
|
|
177
|
+
export function setExtraGeneratedPaths(paths) {
|
|
178
|
+
extraGeneratedPaths = paths;
|
|
179
|
+
}
|
|
180
|
+
export const riskyDiffNoTest = {
|
|
181
|
+
id: 'risky-diff-no-test',
|
|
182
|
+
title: 'Risky change without a correlated test',
|
|
183
|
+
description: 'Signals a diff that touches a security-relevant area (auth, crypto, payments, …) but adds no ' +
|
|
184
|
+
'correlated asserting test. Never blocks: risk is semantic, so it emits PASS/UNVERIFIED only.',
|
|
185
|
+
kind: 'claim-independent',
|
|
186
|
+
run(ctx) {
|
|
187
|
+
ctxHolder = ctx;
|
|
188
|
+
const hits = findRiskyHits(ctx, skipGenerated, extraGeneratedPaths);
|
|
189
|
+
const findings = [];
|
|
190
|
+
for (const hit of hits) {
|
|
191
|
+
const correlated = hasCorrelatedAssertingTest(hit);
|
|
192
|
+
if (correlated) {
|
|
193
|
+
findings.push({
|
|
194
|
+
analyzer: 'risky-diff-no-test',
|
|
195
|
+
verdict: 'PASS',
|
|
196
|
+
file: hit.path,
|
|
197
|
+
line: hit.line,
|
|
198
|
+
title: 'Risky change has a correlated test',
|
|
199
|
+
detail: `The diff touches a risky area ('${hit.token}') in ${hit.path} and adds a correlated ` +
|
|
200
|
+
`asserting test. Coverage looks intentional; this is informational only.`,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
findings.push({
|
|
205
|
+
analyzer: 'risky-diff-no-test',
|
|
206
|
+
verdict: 'UNVERIFIED',
|
|
207
|
+
file: hit.path,
|
|
208
|
+
line: hit.line,
|
|
209
|
+
title: 'Risky change with no correlated test',
|
|
210
|
+
detail: `The diff touches a risky area ('${hit.token}') in ${hit.path}, but no correlated ` +
|
|
211
|
+
`asserting test was detected. 'Risky' is a heuristic (path/identifier tokens), not a ` +
|
|
212
|
+
`certainty, so this never blocks — verify coverage manually.`,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return findings;
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
// Exposed for unit tests.
|
|
220
|
+
export const __test__ = { tokenize, touchesRiskyVocab, basenameStem, stemsCorrelated, RISKY_VOCAB };
|
|
221
|
+
//# sourceMappingURL=riskyDiffNoTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"riskyDiffNoTest.js","sourceRoot":"","sources":["../../src/analyzers/riskyDiffNoTest.ts"],"names":[],"mappings":"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"}
|