@mmnto/totem 1.101.0 → 1.101.2
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/dist/chunkers/chunker-registry.d.ts.map +1 -1
- package/dist/chunkers/chunker-registry.js +5 -0
- package/dist/chunkers/chunker-registry.js.map +1 -1
- package/dist/chunkers/chunker-registry.test.d.ts +1 -1
- package/dist/chunkers/chunker-registry.test.js +6 -2
- package/dist/chunkers/chunker-registry.test.js.map +1 -1
- package/dist/chunkers/generic-chunker.d.ts +8 -0
- package/dist/chunkers/generic-chunker.d.ts.map +1 -0
- package/dist/chunkers/generic-chunker.js +82 -0
- package/dist/chunkers/generic-chunker.js.map +1 -0
- package/dist/chunkers/generic-chunker.test.d.ts +15 -0
- package/dist/chunkers/generic-chunker.test.d.ts.map +1 -0
- package/dist/chunkers/generic-chunker.test.js +129 -0
- package/dist/chunkers/generic-chunker.test.js.map +1 -0
- package/dist/config-schema.d.ts +1 -1
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +4 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/regex-safety/apply-rules-bounded.d.ts.map +1 -1
- package/dist/regex-safety/apply-rules-bounded.js +37 -15
- package/dist/regex-safety/apply-rules-bounded.js.map +1 -1
- package/dist/rule-engine.d.ts +15 -13
- package/dist/rule-engine.d.ts.map +1 -1
- package/dist/rule-engine.js +320 -93
- package/dist/rule-engine.js.map +1 -1
- package/dist/rule-engine.test.js +319 -1
- package/dist/rule-engine.test.js.map +1 -1
- package/dist/spine/selection-rule.d.ts.map +1 -1
- package/dist/spine/selection-rule.js +3 -73
- package/dist/spine/selection-rule.js.map +1 -1
- package/dist/spine/windtunnel-firing.js +1 -1
- package/dist/spine/windtunnel-firing.js.map +1 -1
- package/dist/sys/git.js +1 -1
- package/dist/sys/git.js.map +1 -1
- package/dist/sys/glob.d.ts +10 -0
- package/dist/sys/glob.d.ts.map +1 -0
- package/dist/sys/glob.js +280 -0
- package/dist/sys/glob.js.map +1 -0
- package/dist/sys/glob.test.d.ts +2 -0
- package/dist/sys/glob.test.d.ts.map +1 -0
- package/dist/sys/glob.test.js +280 -0
- package/dist/sys/glob.test.js.map +1 -0
- package/package.json +1 -1
package/dist/rule-engine.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import type { CompiledRule, DiffAddition, FailSoftAttestation, RuleEventCallback, Violation } from './compiler-schema.js';
|
|
2
|
+
import { fileMatchesGlobs, matchesGlob } from './sys/glob.js';
|
|
3
|
+
export { fileMatchesGlobs, matchesGlob };
|
|
2
4
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
+
* Detect whether a rule is a production-only Rust rule.
|
|
6
|
+
* A rule is production-only Rust if it applies to `.rs` files and explicitly
|
|
7
|
+
* excludes tests, or does not explicitly target tests.
|
|
5
8
|
*/
|
|
6
|
-
export declare function
|
|
9
|
+
export declare function isProductionRustRule(rule: CompiledRule): boolean;
|
|
7
10
|
/**
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
10
|
-
* If `globs` contains no positive entries, every file is a positive match
|
|
11
|
-
* by default and only the negative filter applies.
|
|
12
|
-
*
|
|
13
|
-
* Exported for cross-module reuse (Stage 4 verifier consolidation per
|
|
14
|
-
* mmnto-ai/totem#1758) so both rule-engine classification and Stage 4
|
|
15
|
-
* baseline classification share a single source of truth on glob semantics.
|
|
11
|
+
* Parses Rust content to find line ranges (spans) for inline `#[cfg(test)]` modules.
|
|
12
|
+
* Returns an array of `{ startLine: number; endLine: number }` representing the spans.
|
|
16
13
|
*/
|
|
17
|
-
export declare function
|
|
14
|
+
export declare function getRustTestSpans(content: string): {
|
|
15
|
+
startLine: number;
|
|
16
|
+
endLine: number;
|
|
17
|
+
}[];
|
|
18
18
|
/** Injectable logger for core library diagnostics. */
|
|
19
19
|
export interface CoreLogger {
|
|
20
20
|
warn(message: string): void;
|
|
@@ -70,9 +70,11 @@ export declare function parseFailSoftAttestation(justification: string): FailSof
|
|
|
70
70
|
* @param additions - The diff additions to evaluate.
|
|
71
71
|
* @param onRuleEvent - Optional observability callback for metrics collection
|
|
72
72
|
* on trigger / suppress / failure events.
|
|
73
|
+
* @param workingDirectory - Optional working directory for resolving files on disk
|
|
74
|
+
* when parsing spans.
|
|
73
75
|
* @returns All regex-based violations found.
|
|
74
76
|
*/
|
|
75
|
-
export declare function applyRulesToAdditions(ctx: RuleEngineContext, rules: CompiledRule[], additions: DiffAddition[], onRuleEvent?: RuleEventCallback): Violation[];
|
|
77
|
+
export declare function applyRulesToAdditions(ctx: RuleEngineContext, rules: CompiledRule[], additions: DiffAddition[], onRuleEvent?: RuleEventCallback, workingDirectory?: string): Violation[];
|
|
76
78
|
/**
|
|
77
79
|
* Apply AST-engine compiled rules against pre-extracted diff additions.
|
|
78
80
|
* Handles both Tree-sitter S-expression ('ast') and ast-grep ('ast-grep') engines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACV,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-engine.d.ts","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAkBhE;AAgCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAiN1F;AAWD,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C;AA0CD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAeT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,CAaR;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAK1F;AAwGD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,YAAY,EAAE,EACzB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,GACxB,SAAS,EAAE,CAwGb;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,YAAY,EAAE,EACzB,gBAAgB,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC9B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC1D,OAAO,CAAC,SAAS,EAAE,CAAC,CA2TtB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,YAAY,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,SAAS,EAAE,CAUb"}
|
package/dist/rule-engine.js
CHANGED
|
@@ -6,105 +6,251 @@ import { matchAstQueriesBatch } from './ast-query.js';
|
|
|
6
6
|
import { extractAddedLines } from './diff-parser.js';
|
|
7
7
|
import { TotemParseError } from './errors.js';
|
|
8
8
|
import { detectStaleManifest, staleManifestError } from './stale-manifest.js';
|
|
9
|
-
|
|
9
|
+
import { fileMatchesGlobs, matchesGlob } from './sys/glob.js';
|
|
10
|
+
export { fileMatchesGlobs, matchesGlob };
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
12
|
+
* Detect whether a rule is a production-only Rust rule.
|
|
13
|
+
* A rule is production-only Rust if it applies to `.rs` files and explicitly
|
|
14
|
+
* excludes tests, or does not explicitly target tests.
|
|
13
15
|
*/
|
|
14
|
-
export function
|
|
15
|
-
|
|
16
|
-
const normalized = filePath.replace(/\\/g, '/');
|
|
17
|
-
// *.ext — match file extension anywhere
|
|
18
|
-
if (glob.startsWith('*.')) {
|
|
19
|
-
const suffix = glob.slice(1); // e.g., ".ts" or ".test.*"
|
|
20
|
-
if (suffix.endsWith('.*')) {
|
|
21
|
-
// *.test.* — match files with ".test." in the basename (not directory segments)
|
|
22
|
-
const infix = suffix.slice(0, -1); // ".test."
|
|
23
|
-
const basename = normalized.includes('/') // totem-context: this IS the glob matcher — slash check is intentional
|
|
24
|
-
? normalized.slice(normalized.lastIndexOf('/') + 1)
|
|
25
|
-
: normalized;
|
|
26
|
-
return basename.includes(infix);
|
|
27
|
-
}
|
|
28
|
-
return normalized.endsWith(suffix);
|
|
29
|
-
}
|
|
30
|
-
// **/<rest> — match `<rest>` against the full path AND every "/"-aligned
|
|
31
|
-
// tail of the path. This handles BOTH `**/*.ts` (extension match anywhere,
|
|
32
|
-
// historical use case) AND `**/dir/**` (directory match at any depth, the
|
|
33
|
-
// case Stage 4 baselines need per mmnto-ai/totem#1758).
|
|
34
|
-
if (glob.startsWith('**/')) {
|
|
35
|
-
const rest = glob.slice(3);
|
|
36
|
-
if (matchesGlob(normalized, rest))
|
|
37
|
-
return true;
|
|
38
|
-
for (let i = 0; i < normalized.length; i++) {
|
|
39
|
-
if (normalized[i] === '/' && matchesGlob(normalized.slice(i + 1), rest))
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
16
|
+
export function isProductionRustRule(rule) {
|
|
17
|
+
if (!rule.fileGlobs || rule.fileGlobs.length === 0)
|
|
42
18
|
return false;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
19
|
+
const hasRs = rule.fileGlobs.some((g) => typeof g === 'string' && !g.startsWith('!') && g.endsWith('.rs'));
|
|
20
|
+
if (!hasRs)
|
|
21
|
+
return false;
|
|
22
|
+
// If it explicitly excludes test files/folders, it's production-only
|
|
23
|
+
const excludesTests = rule.fileGlobs.some((g) => typeof g === 'string' && g.startsWith('!') && (g.includes('test') || g.includes('tests')));
|
|
24
|
+
if (excludesTests)
|
|
25
|
+
return true;
|
|
26
|
+
// Alternatively, if it does not explicitly include test files
|
|
27
|
+
const includesTests = rule.fileGlobs.some((g) => typeof g === 'string' && !g.startsWith('!') && (g.includes('test') || g.includes('tests')));
|
|
28
|
+
return !includesTests;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Consume a Rust block comment beginning at `start` (which MUST point at the
|
|
32
|
+
* slash of an open-comment marker). Rust block comments NEST, so a naive
|
|
33
|
+
* first-terminator scan (`indexOf` of the close marker) stops at the FIRST
|
|
34
|
+
* close marker and leaves the unconsumed tail — a `}` in that tail corrupts
|
|
35
|
+
* brace-depth tracking. This consumer increments depth on each nested open
|
|
36
|
+
* marker and decrements on each close marker, ending when depth returns to 0
|
|
37
|
+
* (the true comment end) or at EOF. Returns the index just past the final
|
|
38
|
+
* close marker (or `content.length` on an unterminated comment).
|
|
39
|
+
*/
|
|
40
|
+
function skipRustBlockComment(content, start) {
|
|
41
|
+
let idx = start + 2; // past the two-char open-comment marker
|
|
42
|
+
let depth = 1;
|
|
43
|
+
while (idx < content.length) {
|
|
44
|
+
if (content[idx] === '/' && content[idx + 1] === '*') {
|
|
45
|
+
depth++;
|
|
46
|
+
idx += 2;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (content[idx] === '*' && content[idx + 1] === '/') {
|
|
50
|
+
depth--;
|
|
51
|
+
idx += 2;
|
|
52
|
+
if (depth === 0)
|
|
53
|
+
return idx;
|
|
54
|
+
continue;
|
|
74
55
|
}
|
|
75
|
-
|
|
56
|
+
idx++;
|
|
76
57
|
}
|
|
77
|
-
|
|
78
|
-
// (mmnto-ai/totem#1758 second hole):
|
|
79
|
-
// - Bare filename (no `/`, e.g., "Dockerfile"): match anywhere in the
|
|
80
|
-
// tree — `Dockerfile` should match `src/Dockerfile`.
|
|
81
|
-
// - Path-shaped literal (contains `/`, e.g., "src/foo.ts"): repo-relative
|
|
82
|
-
// path that MUST match exactly. The earlier suffix-match form
|
|
83
|
-
// (`endsWith('/' + glob)`) caused `src/foo.ts` to spuriously match
|
|
84
|
-
// `packages/src/foo.ts`. CR mmnto-ai/totem#1766 R1 surfaced this as
|
|
85
|
-
// the matching pair to the `**/dir/**` recursion fix earlier in the
|
|
86
|
-
// PR.
|
|
87
|
-
// totem-context: detecting any slash in the glob string (mmnto-ai/totem#1758) — `.includes('/', 1)` would skip a leading slash, which is the opposite of the path-shape vs bare-filename distinction this branch needs.
|
|
88
|
-
if (glob.includes('/'))
|
|
89
|
-
return normalized === glob;
|
|
90
|
-
return normalized === glob || normalized.endsWith('/' + glob);
|
|
58
|
+
return content.length;
|
|
91
59
|
}
|
|
92
60
|
/**
|
|
93
|
-
*
|
|
94
|
-
* `
|
|
95
|
-
* If `globs` contains no positive entries, every file is a positive match
|
|
96
|
-
* by default and only the negative filter applies.
|
|
97
|
-
*
|
|
98
|
-
* Exported for cross-module reuse (Stage 4 verifier consolidation per
|
|
99
|
-
* mmnto-ai/totem#1758) so both rule-engine classification and Stage 4
|
|
100
|
-
* baseline classification share a single source of truth on glob semantics.
|
|
61
|
+
* Parses Rust content to find line ranges (spans) for inline `#[cfg(test)]` modules.
|
|
62
|
+
* Returns an array of `{ startLine: number; endLine: number }` representing the spans.
|
|
101
63
|
*/
|
|
102
|
-
export function
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
64
|
+
export function getRustTestSpans(content) {
|
|
65
|
+
const spans = [];
|
|
66
|
+
// Regex to match #[cfg(test)] with any whitespace
|
|
67
|
+
const CFG_TEST_RE = /#\s*\[\s*cfg\s*\(\s*test\s*\)\s*\]/g;
|
|
68
|
+
let match;
|
|
69
|
+
while ((match = CFG_TEST_RE.exec(content)) !== null) {
|
|
70
|
+
const attributeIndex = match.index;
|
|
71
|
+
const startLine = content.slice(0, attributeIndex).split('\n').length;
|
|
72
|
+
// Scan forward from the end of the #[cfg(test)] attribute to find the mod block
|
|
73
|
+
let idx = attributeIndex + match[0].length;
|
|
74
|
+
let foundModBraceIdx = -1;
|
|
75
|
+
while (idx < content.length) {
|
|
76
|
+
const char = content[idx];
|
|
77
|
+
// Skip whitespace
|
|
78
|
+
if (/\s/.test(char)) {
|
|
79
|
+
idx++;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Skip line comment
|
|
83
|
+
if (char === '/' && content[idx + 1] === '/') {
|
|
84
|
+
idx = content.indexOf('\n', idx);
|
|
85
|
+
if (idx === -1)
|
|
86
|
+
idx = content.length;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// Skip block comment (Rust block comments NEST — see skipRustBlockComment)
|
|
90
|
+
if (char === '/' && content[idx + 1] === '*') {
|
|
91
|
+
idx = skipRustBlockComment(content, idx);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// Skip other attributes like #[allow(...)]
|
|
95
|
+
if (char === '#') {
|
|
96
|
+
idx++;
|
|
97
|
+
while (idx < content.length) {
|
|
98
|
+
if (content[idx] === ']') {
|
|
99
|
+
idx++;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
idx++;
|
|
103
|
+
}
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
// Skip a visibility modifier — `#[cfg(test)] pub mod` / `pub(crate) mod`
|
|
107
|
+
// are valid test modules and must still be spanned.
|
|
108
|
+
if (content.slice(idx).startsWith('pub') && !/[A-Za-z0-9_]/.test(content[idx + 3] ?? '')) {
|
|
109
|
+
idx += 3;
|
|
110
|
+
while (idx < content.length && /\s/.test(content[idx]))
|
|
111
|
+
idx++;
|
|
112
|
+
if (content[idx] === '(') {
|
|
113
|
+
const close = content.indexOf(')', idx);
|
|
114
|
+
idx = close === -1 ? content.length : close + 1;
|
|
115
|
+
}
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Check for 'mod'
|
|
119
|
+
if (content.slice(idx).startsWith('mod') && /\s/.test(content[idx + 3] ?? '')) {
|
|
120
|
+
let braceIdx = idx + 3;
|
|
121
|
+
let isInlineMod = false;
|
|
122
|
+
while (braceIdx < content.length) {
|
|
123
|
+
const bChar = content[braceIdx];
|
|
124
|
+
// A `;` ends a non-inline `mod external;` declaration (no span);
|
|
125
|
+
// a `{` opens an inline module body.
|
|
126
|
+
if (bChar === ';') {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
if (bChar === '{') {
|
|
130
|
+
isInlineMod = true;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
braceIdx++;
|
|
134
|
+
}
|
|
135
|
+
// Only the inline case records a brace to scan from. The former
|
|
136
|
+
// `idx = braceIdx` / `idx = braceIdx + 1` / `idx++` assignments were
|
|
137
|
+
// dead stores (CodeQL) — the unconditional `break` below exits the
|
|
138
|
+
// scan loop and `idx` is never read afterward.
|
|
139
|
+
if (isInlineMod) {
|
|
140
|
+
foundModBraceIdx = braceIdx;
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
// If we hit any other character, abort search for mod
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
if (foundModBraceIdx !== -1) {
|
|
148
|
+
// Find matching closing curly brace
|
|
149
|
+
let depth = 1;
|
|
150
|
+
let braceScanIdx = foundModBraceIdx + 1;
|
|
151
|
+
let endLine = startLine;
|
|
152
|
+
while (braceScanIdx < content.length) {
|
|
153
|
+
const char = content[braceScanIdx];
|
|
154
|
+
// Skip line comment
|
|
155
|
+
if (char === '/' && content[braceScanIdx + 1] === '/') {
|
|
156
|
+
braceScanIdx = content.indexOf('\n', braceScanIdx);
|
|
157
|
+
if (braceScanIdx === -1)
|
|
158
|
+
braceScanIdx = content.length;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// Skip block comment (Rust block comments NEST — see skipRustBlockComment)
|
|
162
|
+
if (char === '/' && content[braceScanIdx + 1] === '*') {
|
|
163
|
+
braceScanIdx = skipRustBlockComment(content, braceScanIdx);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Skip string literal. A quote terminates the string only when the run
|
|
167
|
+
// of backslashes immediately before it is EVEN (each pair is an escaped
|
|
168
|
+
// backslash); an ODD run means the quote itself is escaped. The naive
|
|
169
|
+
// `content[i-1] !== '\\'` check mis-reads a string ending in an escaped
|
|
170
|
+
// backslash (`"...\\"`) as unterminated, over-reading past the closing
|
|
171
|
+
// quote and swallowing braces (over-exemption — real violations after
|
|
172
|
+
// the module get suppressed).
|
|
173
|
+
if (char === '"') {
|
|
174
|
+
braceScanIdx++;
|
|
175
|
+
while (braceScanIdx < content.length) {
|
|
176
|
+
if (content[braceScanIdx] === '"') {
|
|
177
|
+
let backslashes = 0;
|
|
178
|
+
let b = braceScanIdx - 1;
|
|
179
|
+
while (b >= 0 && content[b] === '\\') {
|
|
180
|
+
backslashes++;
|
|
181
|
+
b--;
|
|
182
|
+
}
|
|
183
|
+
if (backslashes % 2 === 0) {
|
|
184
|
+
braceScanIdx++;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
braceScanIdx++;
|
|
189
|
+
}
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
// Skip raw string literal
|
|
193
|
+
if (char === 'r' &&
|
|
194
|
+
(content[braceScanIdx + 1] === '"' || content[braceScanIdx + 1] === '#')) {
|
|
195
|
+
let hashes = 0;
|
|
196
|
+
let p = braceScanIdx + 1;
|
|
197
|
+
while (p < content.length && content[p] === '#') {
|
|
198
|
+
hashes++;
|
|
199
|
+
p++;
|
|
200
|
+
}
|
|
201
|
+
if (content[p] === '"') {
|
|
202
|
+
const expectedEnd = `"${'#'.repeat(hashes)}`;
|
|
203
|
+
const endIdx = content.indexOf(expectedEnd, p + 1);
|
|
204
|
+
if (endIdx === -1) {
|
|
205
|
+
braceScanIdx = content.length;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
braceScanIdx = endIdx + expectedEnd.length;
|
|
209
|
+
}
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Char literal vs LIFETIME: a `'` opens a char literal only when it
|
|
214
|
+
// closes within the char grammar (`'x'`, `'\n'`, `'\u{7FFF}'`).
|
|
215
|
+
// Otherwise it is a lifetime (`'a`, `'static`) — consuming to the next
|
|
216
|
+
// apostrophe would swallow braces and corrupt depth tracking, producing
|
|
217
|
+
// an over-long span (over-EXEMPTION: real violations after the test
|
|
218
|
+
// module suppressed — the unsafe direction for a lint gate).
|
|
219
|
+
if (char === "'") {
|
|
220
|
+
if (content[braceScanIdx + 1] === '\\') {
|
|
221
|
+
// Escaped char literal — scan to its closing quote.
|
|
222
|
+
braceScanIdx += 2;
|
|
223
|
+
while (braceScanIdx < content.length && content[braceScanIdx] !== "'") {
|
|
224
|
+
braceScanIdx++;
|
|
225
|
+
}
|
|
226
|
+
braceScanIdx++;
|
|
227
|
+
}
|
|
228
|
+
else if (content[braceScanIdx + 2] === "'") {
|
|
229
|
+
// Plain char literal `'x'`.
|
|
230
|
+
braceScanIdx += 3;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// Lifetime — consume only the tick; the identifier is ordinary code.
|
|
234
|
+
braceScanIdx++;
|
|
235
|
+
}
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
if (char === '{') {
|
|
239
|
+
depth++;
|
|
240
|
+
}
|
|
241
|
+
else if (char === '}') {
|
|
242
|
+
depth--;
|
|
243
|
+
if (depth === 0) {
|
|
244
|
+
endLine = content.slice(0, braceScanIdx).split('\n').length;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
braceScanIdx++;
|
|
249
|
+
}
|
|
250
|
+
spans.push({ startLine, endLine });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return spans;
|
|
108
254
|
}
|
|
109
255
|
// ─── Inline suppression ─────────────────────────────
|
|
110
256
|
const SUPPRESS_MARKER = 'totem-ignore';
|
|
@@ -309,7 +455,6 @@ function resolveAstMatchSuppression(ctx, match, addition) {
|
|
|
309
455
|
}
|
|
310
456
|
return { suppressed: false, justification: '', attestation: null };
|
|
311
457
|
}
|
|
312
|
-
// ─── Regex rule execution ───────────────────────────
|
|
313
458
|
/**
|
|
314
459
|
* Apply compiled regex-engine rules against pre-extracted diff additions.
|
|
315
460
|
* Skips additions with non-code AST context (strings, comments, regex).
|
|
@@ -322,14 +467,33 @@ function resolveAstMatchSuppression(ctx, match, addition) {
|
|
|
322
467
|
* @param additions - The diff additions to evaluate.
|
|
323
468
|
* @param onRuleEvent - Optional observability callback for metrics collection
|
|
324
469
|
* on trigger / suppress / failure events.
|
|
470
|
+
* @param workingDirectory - Optional working directory for resolving files on disk
|
|
471
|
+
* when parsing spans.
|
|
325
472
|
* @returns All regex-based violations found.
|
|
326
473
|
*/
|
|
327
|
-
export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent) {
|
|
474
|
+
export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent, workingDirectory) {
|
|
328
475
|
if (additions.length === 0 || rules.length === 0)
|
|
329
476
|
return [];
|
|
330
477
|
const violations = [];
|
|
331
478
|
// Only process regex-engine rules — AST rules have pattern: '' which would match everything
|
|
332
479
|
const regexRules = rules.filter((r) => r.engine === 'regex' || !r.engine);
|
|
480
|
+
const rustTestSpansCache = new Map();
|
|
481
|
+
const getRustSpansSync = (file, workDir) => {
|
|
482
|
+
if (rustTestSpansCache.has(file))
|
|
483
|
+
return rustTestSpansCache.get(file);
|
|
484
|
+
try {
|
|
485
|
+
const fullPath = path.resolve(workDir, file);
|
|
486
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
487
|
+
const spans = getRustTestSpans(content);
|
|
488
|
+
rustTestSpansCache.set(file, spans);
|
|
489
|
+
return spans;
|
|
490
|
+
// totem-context: span-read failure yields no spans → no exemption → the rule still FIRES; the exemption fails toward flagging, never toward suppression.
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
rustTestSpansCache.set(file, []);
|
|
494
|
+
return [];
|
|
495
|
+
}
|
|
496
|
+
};
|
|
333
497
|
for (const rule of regexRules) {
|
|
334
498
|
let re;
|
|
335
499
|
try {
|
|
@@ -365,6 +529,22 @@ export function applyRulesToAdditions(ctx, rules, additions, onRuleEvent) {
|
|
|
365
529
|
continue;
|
|
366
530
|
}
|
|
367
531
|
if (re.test(addition.line)) {
|
|
532
|
+
// Exempt matches inside inline Rust test modules for production-only Rust rules
|
|
533
|
+
if (isProductionRustRule(rule)) {
|
|
534
|
+
const spans = getRustSpansSync(addition.file, workingDirectory || process.cwd());
|
|
535
|
+
const isExempt = spans.some((s) => addition.lineNumber >= s.startLine && addition.lineNumber <= s.endLine);
|
|
536
|
+
if (isExempt) {
|
|
537
|
+
// Emit a suppress event so metrics distinguish "matched but
|
|
538
|
+
// test-span-exempt" from "never matched" (#2397 / greptile P2).
|
|
539
|
+
onRuleEvent?.('suppress', rule.lessonHash, {
|
|
540
|
+
file: addition.file,
|
|
541
|
+
line: addition.lineNumber,
|
|
542
|
+
justification: 'exempt: inline #[cfg(test)] module span (#2397)',
|
|
543
|
+
immutable: rule.immutable,
|
|
544
|
+
});
|
|
545
|
+
continue;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
368
548
|
// Record context telemetry for ALL matches (code, string, comment, regex)
|
|
369
549
|
onRuleEvent?.('trigger', rule.lessonHash, {
|
|
370
550
|
file: addition.file,
|
|
@@ -508,11 +688,40 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
508
688
|
addedLineNumbers,
|
|
509
689
|
}));
|
|
510
690
|
const batchResults = await matchAstQueriesBatch(file, queries, workingDirectory, onWarn, readStrategy);
|
|
691
|
+
// Rust test-span exemption (#2397): resolve spans ONCE per file — not
|
|
692
|
+
// per match — and only when some applicable rule is production-Rust.
|
|
693
|
+
let treeSitterRustSpans = [];
|
|
694
|
+
if (applicableTreeSitter.some(isProductionRustRule)) {
|
|
695
|
+
let fileContent = '';
|
|
696
|
+
try {
|
|
697
|
+
fileContent = readStrategy
|
|
698
|
+
? ((await readStrategy(file)) ?? '')
|
|
699
|
+
: await fs.promises.readFile(path.resolve(workingDirectory, file), 'utf-8');
|
|
700
|
+
// totem-context: span-read failure yields no spans → no exemption → the rule still FIRES; the exemption fails toward flagging, never toward suppression.
|
|
701
|
+
}
|
|
702
|
+
catch {
|
|
703
|
+
fileContent = '';
|
|
704
|
+
}
|
|
705
|
+
treeSitterRustSpans = getRustTestSpans(fileContent);
|
|
706
|
+
}
|
|
511
707
|
// Map results back to violations
|
|
512
708
|
for (let i = 0; i < applicableTreeSitter.length; i++) {
|
|
513
709
|
const rule = applicableTreeSitter[i];
|
|
514
710
|
const matches = batchResults[i] ?? [];
|
|
515
711
|
for (const match of matches) {
|
|
712
|
+
// Exempt matches inside inline Rust test modules (#2397).
|
|
713
|
+
if (isProductionRustRule(rule) &&
|
|
714
|
+
treeSitterRustSpans.some((s) => match.lineNumber >= s.startLine && match.lineNumber <= s.endLine)) {
|
|
715
|
+
// Emit a suppress event so metrics distinguish "matched but
|
|
716
|
+
// test-span-exempt" from "never matched" (#2397 / greptile P2).
|
|
717
|
+
onRuleEvent?.('suppress', rule.lessonHash, {
|
|
718
|
+
file,
|
|
719
|
+
line: match.lineNumber,
|
|
720
|
+
justification: 'exempt: inline #[cfg(test)] module span (#2397)',
|
|
721
|
+
immutable: rule.immutable,
|
|
722
|
+
});
|
|
723
|
+
continue;
|
|
724
|
+
}
|
|
516
725
|
const addition = fileAdditions.find((a) => a.lineNumber === match.lineNumber);
|
|
517
726
|
const { suppressed, justification, attestation } = resolveAstMatchSuppression(ctx, match, addition);
|
|
518
727
|
if (suppressed) {
|
|
@@ -597,10 +806,28 @@ export async function applyAstRulesToAdditions(ctx, rules, additions, workingDir
|
|
|
597
806
|
failureReason: err.message,
|
|
598
807
|
});
|
|
599
808
|
});
|
|
809
|
+
// Rust test-span exemption (#2397): compute once per file, only when
|
|
810
|
+
// some applicable rule is production-Rust (content is already in hand).
|
|
811
|
+
const astGrepRustSpans = applicableAstGrep.some(isProductionRustRule)
|
|
812
|
+
? getRustTestSpans(content)
|
|
813
|
+
: [];
|
|
600
814
|
for (let i = 0; i < applicableAstGrep.length; i++) {
|
|
601
815
|
const rule = applicableAstGrep[i];
|
|
602
816
|
const matches = batchResults[i] ?? [];
|
|
603
817
|
for (const match of matches) {
|
|
818
|
+
// Exempt matches inside inline Rust test modules (#2397).
|
|
819
|
+
if (isProductionRustRule(rule) &&
|
|
820
|
+
astGrepRustSpans.some((s) => match.lineNumber >= s.startLine && match.lineNumber <= s.endLine)) {
|
|
821
|
+
// Emit a suppress event so metrics distinguish "matched but
|
|
822
|
+
// test-span-exempt" from "never matched" (#2397 / greptile P2).
|
|
823
|
+
onRuleEvent?.('suppress', rule.lessonHash, {
|
|
824
|
+
file,
|
|
825
|
+
line: match.lineNumber,
|
|
826
|
+
justification: 'exempt: inline #[cfg(test)] module span (#2397)',
|
|
827
|
+
immutable: rule.immutable,
|
|
828
|
+
});
|
|
829
|
+
continue;
|
|
830
|
+
}
|
|
604
831
|
const addition = fileAdditions.find((a) => a.lineNumber === match.lineNumber);
|
|
605
832
|
const { suppressed, justification, attestation } = resolveAstMatchSuppression(ctx, match, addition);
|
|
606
833
|
if (suppressed) {
|
package/dist/rule-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../src/rule-engine.ts"],"names":[],"mappings":"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"}
|