@kernlang/review 3.1.9 → 3.3.4
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/cache.js +143 -2
- package/dist/cache.js.map +1 -1
- package/dist/call-graph.d.ts +4 -1
- package/dist/call-graph.js +290 -25
- package/dist/call-graph.js.map +1 -1
- package/dist/external-tools.d.ts +23 -4
- package/dist/external-tools.js +68 -12
- package/dist/external-tools.js.map +1 -1
- package/dist/file-context.d.ts +6 -0
- package/dist/file-context.js +6 -1
- package/dist/file-context.js.map +1 -1
- package/dist/graph.js +149 -39
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +27 -3
- package/dist/index.js +254 -41
- package/dist/index.js.map +1 -1
- package/dist/inferrer.d.ts +5 -0
- package/dist/inferrer.js +1 -1
- package/dist/inferrer.js.map +1 -1
- package/dist/mappers/ts-concepts.js +31 -6
- package/dist/mappers/ts-concepts.js.map +1 -1
- package/dist/public-api.d.ts +73 -0
- package/dist/public-api.js +351 -0
- package/dist/public-api.js.map +1 -0
- package/dist/reporter.d.ts +5 -0
- package/dist/reporter.js +119 -84
- package/dist/reporter.js.map +1 -1
- package/dist/review-health.d.ts +38 -0
- package/dist/review-health.js +60 -0
- package/dist/review-health.js.map +1 -0
- package/dist/rules/a11y.d.ts +10 -0
- package/dist/rules/a11y.js +294 -0
- package/dist/rules/a11y.js.map +1 -0
- package/dist/rules/async.d.ts +8 -0
- package/dist/rules/async.js +142 -0
- package/dist/rules/async.js.map +1 -0
- package/dist/rules/base.js +112 -87
- package/dist/rules/base.js.map +1 -1
- package/dist/rules/confidence.d.ts +2 -2
- package/dist/rules/confidence.js +32 -15
- package/dist/rules/confidence.js.map +1 -1
- package/dist/rules/dead-code.d.ts +2 -1
- package/dist/rules/dead-code.js +49 -3
- package/dist/rules/dead-code.js.map +1 -1
- package/dist/rules/index.d.ts +12 -0
- package/dist/rules/index.js +414 -4
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/ink.js +41 -0
- package/dist/rules/ink.js.map +1 -1
- package/dist/rules/kern-source-cross-file.d.ts +2 -0
- package/dist/rules/kern-source-cross-file.js +102 -0
- package/dist/rules/kern-source-cross-file.js.map +1 -0
- package/dist/rules/kern-source.js +145 -18
- package/dist/rules/kern-source.js.map +1 -1
- package/dist/rules/nextjs-app-router.d.ts +11 -0
- package/dist/rules/nextjs-app-router.js +1182 -0
- package/dist/rules/nextjs-app-router.js.map +1 -0
- package/dist/rules/nextjs.js +266 -7
- package/dist/rules/nextjs.js.map +1 -1
- package/dist/rules/perf.d.ts +11 -0
- package/dist/rules/perf.js +131 -0
- package/dist/rules/perf.js.map +1 -0
- package/dist/rules/react-composition.d.ts +12 -0
- package/dist/rules/react-composition.js +741 -0
- package/dist/rules/react-composition.js.map +1 -0
- package/dist/rules/react-hooks.d.ts +11 -0
- package/dist/rules/react-hooks.js +429 -0
- package/dist/rules/react-hooks.js.map +1 -0
- package/dist/rules/react.js +265 -49
- package/dist/rules/react.js.map +1 -1
- package/dist/rules/security-v5.d.ts +11 -0
- package/dist/rules/security-v5.js +200 -0
- package/dist/rules/security-v5.js.map +1 -0
- package/dist/rules/utils.d.ts +52 -1
- package/dist/rules/utils.js +159 -0
- package/dist/rules/utils.js.map +1 -1
- package/dist/semantic-diff.js +1 -1
- package/dist/semantic-diff.js.map +1 -1
- package/dist/taint-ast.js +260 -10
- package/dist/taint-ast.js.map +1 -1
- package/dist/taint-crossfile.d.ts +30 -2
- package/dist/taint-crossfile.js +280 -59
- package/dist/taint-crossfile.js.map +1 -1
- package/dist/taint-findings.js +3 -0
- package/dist/taint-findings.js.map +1 -1
- package/dist/taint-types.d.ts +4 -3
- package/dist/taint-types.js +70 -6
- package/dist/taint-types.js.map +1 -1
- package/dist/taint.d.ts +1 -1
- package/dist/taint.js +1 -1
- package/dist/taint.js.map +1 -1
- package/dist/types.d.ts +98 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
package/dist/rules/react.js
CHANGED
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
* Catches React-specific bugs that KERN IR + AST can detect mechanically.
|
|
5
5
|
*/
|
|
6
6
|
import { Node, SyntaxKind } from 'ts-morph';
|
|
7
|
-
import { finding } from './utils.js';
|
|
7
|
+
import { cleanupExpressionMatches, escapeRegex, findAssignedIdentifier, finding, getTopLevelCleanupExpressions, shouldSkipHookRules, } from './utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a hook-specific rule so it short-circuits on server/api/middleware
|
|
10
|
+
* files — unless the file still has React content (JSX / react import /
|
|
11
|
+
* hook call), which means the boundary classifier is wrong for this file
|
|
12
|
+
* (common on `/routes/` and `/controllers/` React components).
|
|
13
|
+
*/
|
|
14
|
+
function clientOnly(fn) {
|
|
15
|
+
return ((ctx) => (shouldSkipHookRules(ctx) ? [] : fn(ctx)));
|
|
16
|
+
}
|
|
8
17
|
/**
|
|
9
18
|
* Check if a file is actually a React file — has JSX syntax or React imports.
|
|
10
19
|
* Backend/utility files in a React-targeted project should not trigger React rules.
|
|
@@ -21,6 +30,36 @@ function isReactFile(ctx) {
|
|
|
21
30
|
return true;
|
|
22
31
|
return false;
|
|
23
32
|
}
|
|
33
|
+
function unwrapJsxExpression(node) {
|
|
34
|
+
let current = node;
|
|
35
|
+
while (Node.isParenthesizedExpression(current) ||
|
|
36
|
+
Node.isAsExpression(current) ||
|
|
37
|
+
Node.isTypeAssertion(current) ||
|
|
38
|
+
Node.isNonNullExpression(current) ||
|
|
39
|
+
Node.isSatisfiesExpression(current)) {
|
|
40
|
+
current = current.getExpression();
|
|
41
|
+
}
|
|
42
|
+
return current;
|
|
43
|
+
}
|
|
44
|
+
function getMapCallbackRootJsx(callback) {
|
|
45
|
+
const body = callback.getBody();
|
|
46
|
+
if (Node.isBlock(body)) {
|
|
47
|
+
const returnStmt = body.getStatements().find((stmt) => Node.isReturnStatement(stmt));
|
|
48
|
+
const expr = returnStmt?.getExpression();
|
|
49
|
+
if (!expr)
|
|
50
|
+
return undefined;
|
|
51
|
+
const unwrapped = unwrapJsxExpression(expr);
|
|
52
|
+
if (Node.isJsxElement(unwrapped) || Node.isJsxSelfClosingElement(unwrapped) || Node.isJsxFragment(unwrapped)) {
|
|
53
|
+
return unwrapped;
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const unwrapped = unwrapJsxExpression(body);
|
|
58
|
+
if (Node.isJsxElement(unwrapped) || Node.isJsxSelfClosingElement(unwrapped) || Node.isJsxFragment(unwrapped)) {
|
|
59
|
+
return unwrapped;
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
24
63
|
// ── Rule 11: async-effect ────────────────────────────────────────────────
|
|
25
64
|
// useEffect(async () => ...) — React doesn't support async effect callbacks
|
|
26
65
|
function asyncEffect(ctx) {
|
|
@@ -106,6 +145,25 @@ function renderSideEffect(ctx) {
|
|
|
106
145
|
}
|
|
107
146
|
// ── Rule 13: unstable-key ────────────────────────────────────────────────
|
|
108
147
|
// Missing key or key={index} in .map() JSX expressions
|
|
148
|
+
function mappedFragmentKey(ctx) {
|
|
149
|
+
const findings = [];
|
|
150
|
+
for (const call of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
151
|
+
const callee = call.getExpression();
|
|
152
|
+
if (!Node.isPropertyAccessExpression(callee) || callee.getName() !== 'map')
|
|
153
|
+
continue;
|
|
154
|
+
const args = call.getArguments();
|
|
155
|
+
if (args.length === 0)
|
|
156
|
+
continue;
|
|
157
|
+
const callback = args[0];
|
|
158
|
+
if (!Node.isArrowFunction(callback) && !Node.isFunctionExpression(callback))
|
|
159
|
+
continue;
|
|
160
|
+
const rootJsx = getMapCallbackRootJsx(callback);
|
|
161
|
+
if (!rootJsx || !Node.isJsxFragment(rootJsx))
|
|
162
|
+
continue;
|
|
163
|
+
findings.push(finding('mapped-fragment-key', 'warning', 'bug', 'JSX fragment returned from .map() cannot carry a key — use <Fragment key={...}> or a keyed element', ctx.filePath, rootJsx.getStartLineNumber(), 1, { suggestion: 'Replace <>...</> with <Fragment key={item.id}>...</Fragment> or wrap in a keyed element' }));
|
|
164
|
+
}
|
|
165
|
+
return findings;
|
|
166
|
+
}
|
|
109
167
|
function unstableKey(ctx) {
|
|
110
168
|
const findings = [];
|
|
111
169
|
// AST-based: walk CallExpressions where callee is .map()
|
|
@@ -121,27 +179,23 @@ function unstableKey(ctx) {
|
|
|
121
179
|
if (args.length === 0)
|
|
122
180
|
continue;
|
|
123
181
|
const callback = args[0];
|
|
124
|
-
if (
|
|
182
|
+
if (!Node.isArrowFunction(callback) && !Node.isFunctionExpression(callback))
|
|
125
183
|
continue;
|
|
126
184
|
// Get the index parameter (second param of the callback)
|
|
127
185
|
const params = callback.getKind() === SyntaxKind.ArrowFunction
|
|
128
186
|
? callback.getParameters()
|
|
129
187
|
: callback.getParameters();
|
|
130
188
|
const indexParam = params.length >= 2 ? params[1].getName() : null;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
...callback.getDescendantsOfKind(SyntaxKind.JsxOpeningElement),
|
|
134
|
-
...callback.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
|
|
135
|
-
];
|
|
136
|
-
if (jsxElements.length === 0)
|
|
189
|
+
const rootJsx = getMapCallbackRootJsx(callback);
|
|
190
|
+
if (!rootJsx)
|
|
137
191
|
continue; // No JSX → skip (fixes non-JSX .map() FP)
|
|
138
|
-
|
|
139
|
-
|
|
192
|
+
if (Node.isJsxFragment(rootJsx))
|
|
193
|
+
continue; // handled by mapped-fragment-key
|
|
140
194
|
const line = call.getStartLineNumber();
|
|
141
195
|
// Get attributes from the first JSX element
|
|
142
|
-
const attributes =
|
|
143
|
-
?
|
|
144
|
-
:
|
|
196
|
+
const attributes = rootJsx.getKind() === SyntaxKind.JsxSelfClosingElement
|
|
197
|
+
? rootJsx.getAttributes()
|
|
198
|
+
: rootJsx.getOpeningElement().getAttributes();
|
|
145
199
|
let hasKey = false;
|
|
146
200
|
let usesIndexKey = false;
|
|
147
201
|
for (const attr of attributes) {
|
|
@@ -358,6 +412,71 @@ function effectSelfUpdateLoop(ctx) {
|
|
|
358
412
|
// ── Rule: missing-effect-cleanup ─────────────────────────────────────────
|
|
359
413
|
// useEffect with setInterval/addEventListener but no cleanup return function
|
|
360
414
|
function missingEffectCleanup(ctx) {
|
|
415
|
+
const buildEffectLeakSpecs = (callback) => {
|
|
416
|
+
const specs = [];
|
|
417
|
+
for (const desc of callback.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
418
|
+
const callee = desc.getExpression();
|
|
419
|
+
if (Node.isIdentifier(callee)) {
|
|
420
|
+
const name = callee.getText();
|
|
421
|
+
const assignedName = findAssignedIdentifier(desc);
|
|
422
|
+
if (name === 'setInterval' || name === 'setTimeout') {
|
|
423
|
+
const clearName = name === 'setInterval' ? 'clearInterval' : 'clearTimeout';
|
|
424
|
+
specs.push({
|
|
425
|
+
label: name,
|
|
426
|
+
line: desc.getStartLineNumber(),
|
|
427
|
+
cleanupPatterns: assignedName
|
|
428
|
+
? [new RegExp(`\\b${clearName}\\s*\\(\\s*${escapeRegex(assignedName)}\\s*\\)`)]
|
|
429
|
+
: [new RegExp(`\\b${clearName}\\s*\\(`)],
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
if (!Node.isPropertyAccessExpression(callee))
|
|
435
|
+
continue;
|
|
436
|
+
const method = callee.getName();
|
|
437
|
+
const targetText = callee.getExpression().getText();
|
|
438
|
+
const assignedName = findAssignedIdentifier(desc);
|
|
439
|
+
if (method === 'addEventListener') {
|
|
440
|
+
specs.push({
|
|
441
|
+
label: 'addEventListener',
|
|
442
|
+
line: desc.getStartLineNumber(),
|
|
443
|
+
cleanupPatterns: [new RegExp(`${escapeRegex(targetText)}\\s*\\.\\s*removeEventListener\\s*\\(`)],
|
|
444
|
+
});
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
if (method === 'on') {
|
|
448
|
+
specs.push({
|
|
449
|
+
label: 'on',
|
|
450
|
+
line: desc.getStartLineNumber(),
|
|
451
|
+
cleanupPatterns: assignedName
|
|
452
|
+
? [
|
|
453
|
+
new RegExp(`\\b${escapeRegex(assignedName)}\\s*\\(`),
|
|
454
|
+
new RegExp(`\\b${escapeRegex(assignedName)}\\s*\\.\\s*(?:unsubscribe|dispose|destroy|off|removeListener)\\s*\\(`),
|
|
455
|
+
new RegExp(`${escapeRegex(targetText)}\\s*\\.\\s*(?:off|removeListener|unsubscribe)\\s*\\(`),
|
|
456
|
+
]
|
|
457
|
+
: [/\.\s*(?:off|removeListener|unsubscribe|dispose|destroy)\s*\(/],
|
|
458
|
+
cleanupReturnIdentifiers: assignedName ? [assignedName] : [],
|
|
459
|
+
cleanupReturnCallPattern: /\.\s*on\s*\(/,
|
|
460
|
+
});
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
if (method === 'subscribe') {
|
|
464
|
+
specs.push({
|
|
465
|
+
label: 'subscribe',
|
|
466
|
+
line: desc.getStartLineNumber(),
|
|
467
|
+
cleanupPatterns: assignedName
|
|
468
|
+
? [
|
|
469
|
+
new RegExp(`\\b${escapeRegex(assignedName)}\\s*\\(`),
|
|
470
|
+
new RegExp(`\\b${escapeRegex(assignedName)}\\s*\\.\\s*(?:unsubscribe|dispose|destroy|off)\\s*\\(`),
|
|
471
|
+
]
|
|
472
|
+
: [/\.\s*(?:unsubscribe|dispose|destroy|off)\s*\(/],
|
|
473
|
+
cleanupReturnIdentifiers: assignedName ? [assignedName] : [],
|
|
474
|
+
cleanupReturnCallPattern: /\.\s*subscribe\s*\(/,
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return specs;
|
|
479
|
+
};
|
|
361
480
|
const findings = [];
|
|
362
481
|
for (const call of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
363
482
|
const callee = call.getExpression().getText();
|
|
@@ -369,24 +488,13 @@ function missingEffectCleanup(ctx) {
|
|
|
369
488
|
const callback = args[0];
|
|
370
489
|
if (!Node.isArrowFunction(callback) && !Node.isFunctionExpression(callback))
|
|
371
490
|
continue;
|
|
372
|
-
const
|
|
373
|
-
|
|
374
|
-
if (Node.isBlock(body)) {
|
|
375
|
-
hasCleanup = body.getStatements().some((s) => {
|
|
376
|
-
if (!Node.isReturnStatement(s))
|
|
377
|
-
return false;
|
|
378
|
-
const expr = s.getExpression();
|
|
379
|
-
return (expr != null && (Node.isArrowFunction(expr) || Node.isFunctionExpression(expr) || Node.isIdentifier(expr)));
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
if (hasCleanup)
|
|
491
|
+
const leakSpecs = buildEffectLeakSpecs(callback).filter((spec, index, specs) => specs.findIndex((candidate) => candidate.label === spec.label && candidate.line === spec.line) === index);
|
|
492
|
+
if (leakSpecs.length === 0)
|
|
383
493
|
continue;
|
|
384
|
-
const
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
if (leakyCalls.length > 0) {
|
|
389
|
-
findings.push(finding('missing-effect-cleanup', 'warning', 'bug', `useEffect uses '${leakyCalls[0].getExpression().getText()}' but is missing a cleanup return function`, ctx.filePath, call.getStartLineNumber(), 1, { suggestion: 'Return a cleanup function: return () => clearInterval(id);' }));
|
|
494
|
+
const cleanupExprs = getTopLevelCleanupExpressions(callback.getBody());
|
|
495
|
+
const leakedSpec = leakSpecs.find((spec) => !cleanupExprs.some((expr) => cleanupExpressionMatches(expr, spec)));
|
|
496
|
+
if (leakedSpec) {
|
|
497
|
+
findings.push(finding('missing-effect-cleanup', 'warning', 'bug', `useEffect uses '${leakedSpec.label}' but is missing matching cleanup`, ctx.filePath, call.getStartLineNumber(), 1, { suggestion: 'Return a cleanup function: return () => clearInterval(id);' }));
|
|
390
498
|
}
|
|
391
499
|
}
|
|
392
500
|
return findings;
|
|
@@ -465,6 +573,110 @@ function refInRender(ctx) {
|
|
|
465
573
|
}
|
|
466
574
|
return false;
|
|
467
575
|
}
|
|
576
|
+
function getNearestNestedFunctionScope(node) {
|
|
577
|
+
let cur = node.getParent();
|
|
578
|
+
while (cur) {
|
|
579
|
+
if (Node.isArrowFunction(cur) || Node.isFunctionExpression(cur) || Node.isFunctionDeclaration(cur)) {
|
|
580
|
+
const outer = cur.getFirstAncestor((ancestor) => Node.isArrowFunction(ancestor) ||
|
|
581
|
+
Node.isFunctionExpression(ancestor) ||
|
|
582
|
+
Node.isFunctionDeclaration(ancestor));
|
|
583
|
+
return outer ? cur : undefined;
|
|
584
|
+
}
|
|
585
|
+
cur = cur.getParent();
|
|
586
|
+
}
|
|
587
|
+
return undefined;
|
|
588
|
+
}
|
|
589
|
+
function getEnclosingFunctionScope(node) {
|
|
590
|
+
let cur = node.getParent();
|
|
591
|
+
while (cur) {
|
|
592
|
+
if (Node.isArrowFunction(cur) || Node.isFunctionExpression(cur) || Node.isFunctionDeclaration(cur)) {
|
|
593
|
+
return cur;
|
|
594
|
+
}
|
|
595
|
+
cur = cur.getParent();
|
|
596
|
+
}
|
|
597
|
+
return undefined;
|
|
598
|
+
}
|
|
599
|
+
function getFunctionBindingName(fn) {
|
|
600
|
+
if (Node.isFunctionDeclaration(fn)) {
|
|
601
|
+
const nameNode = fn.getNameNode();
|
|
602
|
+
return nameNode && Node.isIdentifier(nameNode) ? nameNode : undefined;
|
|
603
|
+
}
|
|
604
|
+
const parent = fn.getParent();
|
|
605
|
+
if (Node.isVariableDeclaration(parent)) {
|
|
606
|
+
const nameNode = parent.getNameNode();
|
|
607
|
+
return Node.isIdentifier(nameNode) ? nameNode : undefined;
|
|
608
|
+
}
|
|
609
|
+
return undefined;
|
|
610
|
+
}
|
|
611
|
+
function hasRenderTimeInvocation(fn) {
|
|
612
|
+
const binding = getFunctionBindingName(fn);
|
|
613
|
+
if (!binding)
|
|
614
|
+
return true;
|
|
615
|
+
const declarations = binding.getSymbol()?.getDeclarations() ?? [];
|
|
616
|
+
if (declarations.length === 0)
|
|
617
|
+
return true;
|
|
618
|
+
for (const candidate of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.Identifier)) {
|
|
619
|
+
if (candidate === binding)
|
|
620
|
+
continue;
|
|
621
|
+
if (candidate.getText() !== binding.getText())
|
|
622
|
+
continue;
|
|
623
|
+
if (candidate.getStart() >= fn.getStart() && candidate.getEnd() <= fn.getEnd())
|
|
624
|
+
continue;
|
|
625
|
+
const candidateDeclarations = candidate.getSymbol()?.getDeclarations() ?? [];
|
|
626
|
+
if (!candidateDeclarations.some((decl) => declarations.includes(decl)))
|
|
627
|
+
continue;
|
|
628
|
+
const parent = candidate.getParent();
|
|
629
|
+
const isDirectInvocation = (Node.isCallExpression(parent) && parent.getExpression() === candidate) ||
|
|
630
|
+
(Node.isNewExpression(parent) && parent.getExpression() === candidate) ||
|
|
631
|
+
(Node.isTaggedTemplateExpression(parent) && parent.getTag() === candidate);
|
|
632
|
+
if (!isDirectInvocation)
|
|
633
|
+
continue;
|
|
634
|
+
if (isInSafeScope(candidate))
|
|
635
|
+
continue;
|
|
636
|
+
return true;
|
|
637
|
+
}
|
|
638
|
+
return false;
|
|
639
|
+
}
|
|
640
|
+
function isGuardedLazyRefInitialization(prop, refName) {
|
|
641
|
+
const ifAncestor = prop.getFirstAncestorByKind(SyntaxKind.IfStatement);
|
|
642
|
+
if (!ifAncestor)
|
|
643
|
+
return false;
|
|
644
|
+
const condText = ifAncestor.getExpression().getText().replace(/\s+/g, '');
|
|
645
|
+
const escapedRef = refName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
646
|
+
const patterns = [
|
|
647
|
+
new RegExp(`\\b${escapedRef}\\.current\\b.*(?:===|==|!==|!=).*(?:null|undefined)`),
|
|
648
|
+
new RegExp(`(?:null|undefined).*(?:===|==|!==|!=).*\\b${escapedRef}\\.current\\b`),
|
|
649
|
+
new RegExp(`!${escapedRef}\\.current\\b`),
|
|
650
|
+
new RegExp(`\\b${escapedRef}\\.current\\.length===0\\b`),
|
|
651
|
+
new RegExp(`\\b${escapedRef}\\.current\\.length==0\\b`),
|
|
652
|
+
new RegExp(`!${escapedRef}\\.current\\.length\\b`),
|
|
653
|
+
];
|
|
654
|
+
return patterns.some((pattern) => pattern.test(condText));
|
|
655
|
+
}
|
|
656
|
+
function scopeHasGuardedLazyInitializationReadAllowance(scope, refName) {
|
|
657
|
+
const escapedRef = refName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
658
|
+
for (const ifStmt of scope.getDescendantsOfKind(SyntaxKind.IfStatement)) {
|
|
659
|
+
const condText = ifStmt.getExpression().getText().replace(/\s+/g, '');
|
|
660
|
+
const guardPatterns = [
|
|
661
|
+
new RegExp(`\\b${escapedRef}\\.current\\b.*(?:===|==|!==|!=).*(?:null|undefined)`),
|
|
662
|
+
new RegExp(`(?:null|undefined).*(?:===|==|!==|!=).*\\b${escapedRef}\\.current\\b`),
|
|
663
|
+
new RegExp(`!${escapedRef}\\.current\\b`),
|
|
664
|
+
new RegExp(`\\b${escapedRef}\\.current\\.length===0\\b`),
|
|
665
|
+
new RegExp(`\\b${escapedRef}\\.current\\.length==0\\b`),
|
|
666
|
+
new RegExp(`!${escapedRef}\\.current\\.length\\b`),
|
|
667
|
+
];
|
|
668
|
+
if (!guardPatterns.some((pattern) => pattern.test(condText)))
|
|
669
|
+
continue;
|
|
670
|
+
const writesInThen = ifStmt
|
|
671
|
+
.getThenStatement()
|
|
672
|
+
.getDescendantsOfKind(SyntaxKind.BinaryExpression)
|
|
673
|
+
.some((expr) => expr.getLeft().getText() === `${refName}.current` &&
|
|
674
|
+
expr.getOperatorToken().getKind() === SyntaxKind.EqualsToken);
|
|
675
|
+
if (writesInThen)
|
|
676
|
+
return true;
|
|
677
|
+
}
|
|
678
|
+
return false;
|
|
679
|
+
}
|
|
468
680
|
// Find .current access on ref variables
|
|
469
681
|
for (const prop of ctx.sourceFile.getDescendantsOfKind(SyntaxKind.PropertyAccessExpression)) {
|
|
470
682
|
if (prop.getName() !== 'current')
|
|
@@ -479,21 +691,24 @@ function refInRender(ctx) {
|
|
|
479
691
|
continue;
|
|
480
692
|
// Skip lazy initialization pattern: if (ref.current === null) ref.current = x
|
|
481
693
|
// React explicitly allows this during render (react.dev/reference/react/useRef)
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
}
|
|
490
|
-
}
|
|
694
|
+
if (isGuardedLazyRefInitialization(prop, obj.getText()))
|
|
695
|
+
continue;
|
|
696
|
+
// Writes inside nested local callbacks are not render-time unless the
|
|
697
|
+
// callback is actually invoked during render.
|
|
698
|
+
const nestedFunctionScope = getNearestNestedFunctionScope(prop);
|
|
699
|
+
if (nestedFunctionScope && !hasRenderTimeInvocation(nestedFunctionScope))
|
|
700
|
+
continue;
|
|
491
701
|
// Check if this is a read or write
|
|
492
702
|
const parent = prop.getParent();
|
|
493
703
|
const isWrite = parent &&
|
|
494
704
|
Node.isBinaryExpression(parent) &&
|
|
495
705
|
parent.getLeft() === prop &&
|
|
496
706
|
parent.getOperatorToken().getKind() === SyntaxKind.EqualsToken;
|
|
707
|
+
if (!isWrite) {
|
|
708
|
+
const enclosingScope = getEnclosingFunctionScope(prop);
|
|
709
|
+
if (enclosingScope && scopeHasGuardedLazyInitializationReadAllowance(enclosingScope, obj.getText()))
|
|
710
|
+
continue;
|
|
711
|
+
}
|
|
497
712
|
const action = isWrite ? 'written to' : 'read';
|
|
498
713
|
findings.push(finding('ref-in-render', 'error', 'bug', `ref.current ${action} during render — refs are not tracked by React and may be stale`, ctx.filePath, prop.getStartLineNumber(), 1, {
|
|
499
714
|
suggestion: isWrite
|
|
@@ -613,17 +828,18 @@ function reducerMutation(ctx) {
|
|
|
613
828
|
}
|
|
614
829
|
// ── Exported React Rules ─────────────────────────────────────────────────
|
|
615
830
|
export const reactRules = [
|
|
616
|
-
asyncEffect,
|
|
617
|
-
renderSideEffect,
|
|
831
|
+
clientOnly(asyncEffect),
|
|
832
|
+
clientOnly(renderSideEffect),
|
|
833
|
+
mappedFragmentKey,
|
|
618
834
|
unstableKey,
|
|
619
|
-
staleClosure,
|
|
620
|
-
stateExplosion,
|
|
621
|
-
hookOrder,
|
|
622
|
-
effectSelfUpdateLoop,
|
|
623
|
-
missingEffectCleanup,
|
|
835
|
+
clientOnly(staleClosure),
|
|
836
|
+
clientOnly(stateExplosion),
|
|
837
|
+
clientOnly(hookOrder),
|
|
838
|
+
clientOnly(effectSelfUpdateLoop),
|
|
839
|
+
clientOnly(missingEffectCleanup),
|
|
624
840
|
inlineContextValue,
|
|
625
|
-
refInRender,
|
|
626
|
-
missingMemoDeps,
|
|
627
|
-
reducerMutation,
|
|
841
|
+
clientOnly(refInRender),
|
|
842
|
+
clientOnly(missingMemoDeps),
|
|
843
|
+
clientOnly(reducerMutation),
|
|
628
844
|
];
|
|
629
845
|
//# sourceMappingURL=react.js.map
|
package/dist/rules/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/rules/react.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/rules/react.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security v5 — XSS attribute surface, javascript: URLs, crypto misuse.
|
|
3
|
+
*
|
|
4
|
+
* Note: ssrf-fetch and sql-string-concat are handled automatically by the
|
|
5
|
+
* shared taint engine via new sinks registered in taint-types.ts (Wave 0).
|
|
6
|
+
* This file holds only the rules that can't be expressed as a sink category.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReviewFinding, RuleContext } from '../types.js';
|
|
9
|
+
declare function xssHrefJavascript(ctx: RuleContext): ReviewFinding[];
|
|
10
|
+
export declare const securityV5Rules: (typeof xssHrefJavascript)[];
|
|
11
|
+
export {};
|