@trebired/code-discipline 3.3.1 → 3.3.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/CHANGELOG.md +6 -0
- package/README.md +16 -35
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +1 -14
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/rule-slugs.d.ts.map +1 -1
- package/dist/checks/rule-slugs.js +0 -1
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/dry/candidates.d.ts +2 -6
- package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
- package/dist/checks/rules/dry/candidates.js +173 -126
- package/dist/checks/rules/dry/candidates.js.map +1 -1
- package/dist/checks/rules/dry/fingerprint.d.ts +1 -0
- package/dist/checks/rules/dry/fingerprint.d.ts.map +1 -1
- package/dist/checks/rules/dry/fingerprint.js +1 -0
- package/dist/checks/rules/dry/fingerprint.js.map +1 -1
- package/dist/checks/rules/dry/index.d.ts +1 -2
- package/dist/checks/rules/dry/index.d.ts.map +1 -1
- package/dist/checks/rules/dry/index.js +3 -12
- package/dist/checks/rules/dry/index.js.map +1 -1
- package/dist/checks/rules/dry/model.d.ts +7 -34
- package/dist/checks/rules/dry/model.d.ts.map +1 -1
- package/dist/checks/rules/dry/model.js +1 -11
- package/dist/checks/rules/dry/model.js.map +1 -1
- package/dist/checks/rules/evasion-guards/functions.d.ts +1 -1
- package/dist/checks/rules/evasion-guards/functions.d.ts.map +1 -1
- package/dist/checks/rules/evasion-guards/functions.js +3 -25
- package/dist/checks/rules/evasion-guards/functions.js.map +1 -1
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/function-lines.js +6 -69
- package/dist/checks/rules/max/function-lines.js.map +1 -1
- package/dist/checks/rules/typescript-functions.d.ts +5 -1
- package/dist/checks/rules/typescript-functions.d.ts.map +1 -1
- package/dist/checks/rules/typescript-functions.js +26 -1
- package/dist/checks/rules/typescript-functions.js.map +1 -1
- package/dist/checks/types.d.ts +2 -9
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/config/normalize/rule-options.d.ts.map +1 -1
- package/dist/config/normalize/rule-options.js +1 -28
- package/dist/config/normalize/rule-options.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/checks/rules/dry/fix.d.ts +0 -5
- package/dist/checks/rules/dry/fix.d.ts.map +0 -1
- package/dist/checks/rules/dry/fix.js +0 -252
- package/dist/checks/rules/dry/fix.js.map +0 -1
- package/dist/checks/rules/dry/helpers.d.ts +0 -5
- package/dist/checks/rules/dry/helpers.d.ts.map +0 -1
- package/dist/checks/rules/dry/helpers.js +0 -99
- package/dist/checks/rules/dry/helpers.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@trebired/code-discipline` will be documented here.
|
|
4
4
|
|
|
5
|
+
## 3.3.2
|
|
6
|
+
|
|
7
|
+
- Removed `dry.helpers` registration and the helper-based `dry` autofix path; `dry` now scans source functions directly.
|
|
8
|
+
- Changed `dry` duplicate reporting to emit neutral function groups such as `function duplicates in files: ...` instead of selecting a primary file.
|
|
9
|
+
- Added matching function names and high structural similarity as DRY duplicate signals alongside exact normalized structure.
|
|
10
|
+
|
|
5
11
|
## 3.3.1
|
|
6
12
|
|
|
7
13
|
- Made `banned-files` fixable; `code-discipline fix banned-files` now deletes matching banned files and reports a `deleted_files` count.
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Configurable repository discipline checks and rule-driven fixes for Bun and Node
|
|
|
9
9
|
- sync rules such as keeping source imports, `tsconfig.json`, and optional `package.json#imports` aligned
|
|
10
10
|
- source cleanup rules such as removing comments across supported languages
|
|
11
11
|
- native acceleration with a TypeScript fallback for large codebases
|
|
12
|
-
- DRY enforcement
|
|
12
|
+
- DRY enforcement through source-tree duplicate function grouping
|
|
13
13
|
|
|
14
14
|
It is not a formatter, linter replacement, or build system.
|
|
15
15
|
|
|
@@ -31,7 +31,7 @@ code-discipline check
|
|
|
31
31
|
code-discipline check save
|
|
32
32
|
code-discipline check max-function-lines dry
|
|
33
33
|
code-discipline fix
|
|
34
|
-
code-discipline fix banned-files sync-imports
|
|
34
|
+
code-discipline fix banned-files sync-imports remove-comments
|
|
35
35
|
code-discipline gate -- bun run dev
|
|
36
36
|
```
|
|
37
37
|
|
|
@@ -160,14 +160,7 @@ export default defineCodeDisciplineConfig({
|
|
|
160
160
|
aliasPrefix: "#",
|
|
161
161
|
},
|
|
162
162
|
},
|
|
163
|
-
dry: {
|
|
164
|
-
helpers: [
|
|
165
|
-
{
|
|
166
|
-
from: "./src/shared/to-text.ts",
|
|
167
|
-
exportName: "toText",
|
|
168
|
-
},
|
|
169
|
-
],
|
|
170
|
-
},
|
|
163
|
+
dry: {},
|
|
171
164
|
},
|
|
172
165
|
});
|
|
173
166
|
```
|
|
@@ -211,7 +204,7 @@ export default defineCodeDisciplineConfig({
|
|
|
211
204
|
|
|
212
205
|
```sh
|
|
213
206
|
code-discipline check max-file-lines max-function-lines
|
|
214
|
-
code-discipline fix banned-files sync-imports
|
|
207
|
+
code-discipline fix banned-files sync-imports remove-comments
|
|
215
208
|
```
|
|
216
209
|
|
|
217
210
|
Rules use kebab-case public slugs:
|
|
@@ -226,7 +219,7 @@ Rules use kebab-case public slugs:
|
|
|
226
219
|
- `dry`
|
|
227
220
|
- `evasion-guards`
|
|
228
221
|
|
|
229
|
-
`fix` only accepts fixable rules. Trying to run `code-discipline fix max-function-lines` or `code-discipline fix evasion-guards` fails clearly.
|
|
222
|
+
`fix` only accepts fixable rules. Trying to run `code-discipline fix max-function-lines`, `code-discipline fix dry`, or `code-discipline fix evasion-guards` fails clearly.
|
|
230
223
|
|
|
231
224
|
## Runtime API
|
|
232
225
|
|
|
@@ -440,36 +433,24 @@ code-discipline fix remove-comments
|
|
|
440
433
|
|
|
441
434
|
### `dry`
|
|
442
435
|
|
|
443
|
-
|
|
436
|
+
Reports duplicate function groups across the configured source tree.
|
|
444
437
|
|
|
445
|
-
-
|
|
438
|
+
- exact normalized structure is reported with 100% confidence
|
|
439
|
+
- matching function names are reported with 100% confidence
|
|
440
|
+
- highly similar normalized function structure is reported as a likely duplicate
|
|
446
441
|
- whitespace, comments, function names, and local identifier names do not matter
|
|
447
|
-
-
|
|
448
|
-
-
|
|
449
|
-
- source-tree duplicate discovery is check-only; add a canonical helper when you want autofix
|
|
450
|
-
|
|
451
|
-
Canonical helpers are registered by module export reference:
|
|
442
|
+
- reports are neutral groups, not "file A duplicates file B"
|
|
443
|
+
- `dry` is check-only
|
|
452
444
|
|
|
453
445
|
```ts
|
|
454
|
-
dry: {
|
|
455
|
-
helpers: [
|
|
456
|
-
{
|
|
457
|
-
from: "./src/shared/to-text.ts",
|
|
458
|
-
exportName: "toText",
|
|
459
|
-
},
|
|
460
|
-
{
|
|
461
|
-
from: "./src/shared/normalize.ts",
|
|
462
|
-
exportName: "default",
|
|
463
|
-
},
|
|
464
|
-
],
|
|
465
|
-
}
|
|
446
|
+
dry: {}
|
|
466
447
|
```
|
|
467
448
|
|
|
468
|
-
|
|
449
|
+
Example output:
|
|
469
450
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
451
|
+
```txt
|
|
452
|
+
dry multiple files function duplicates in files: src/one.ts, src/two.ts
|
|
453
|
+
```
|
|
473
454
|
|
|
474
455
|
## Lifecycle Hooks
|
|
475
456
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EAIxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EAIxB,MAAM,YAAY,CAAC;AAoRpB,iBAAe,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQ1G;AAED,iBAAe,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsBpG;AAED,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/checks/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { fixFolderization } from "./fix-folderization.js";
|
|
|
9
9
|
import { runFolderizeCompoundFilesRule } from "./rules/folderize/compound-files.js";
|
|
10
10
|
import { collectBannedFileViolations, fixBannedFilesRule } from "./rules/banned/files.js";
|
|
11
11
|
import { collectBannedPatternViolations } from "./rules/banned/patterns.js";
|
|
12
|
-
import { collectDryViolations
|
|
12
|
+
import { collectDryViolations } from "./rules/dry/index.js";
|
|
13
13
|
import { runEvasionGuardsRule } from "./rules/evasion-guards/index.js";
|
|
14
14
|
import { runMaxFileLinesRule } from "./rules/max/file-lines.js";
|
|
15
15
|
import { runMaxFunctionLinesRule } from "./rules/max/function-lines.js";
|
|
@@ -170,18 +170,6 @@ async function applyFolderizeFix(state, normalized, logger) {
|
|
|
170
170
|
state.sourceFiles = await scanSourceFiles(normalized);
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
async function applyDryFix(state, normalized) {
|
|
174
|
-
if (!normalized.rules.dry || !shouldRunFixRule("dry", normalized))
|
|
175
|
-
return;
|
|
176
|
-
const result = await fixDryRule(state.sourceFiles, normalized);
|
|
177
|
-
const violations = applyConfiguredSeverity(result.violations, normalized);
|
|
178
|
-
state.ruleResults.dry = mapFixRuleResult({ ...result, violations });
|
|
179
|
-
state.violations.push(...violations);
|
|
180
|
-
state.rewrittenFiles += result.rewritten_files ?? 0;
|
|
181
|
-
if ((result.rewritten_files ?? 0) > 0) {
|
|
182
|
-
state.sourceFiles = await scanSourceFiles(normalized);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
173
|
async function applySyncImportsFix(state, normalized) {
|
|
186
174
|
if (!normalized.rules.syncImports || !shouldRunFixRule("sync-imports", normalized))
|
|
187
175
|
return;
|
|
@@ -254,7 +242,6 @@ async function fixCodeDiscipline(options) {
|
|
|
254
242
|
};
|
|
255
243
|
await applyBannedFilesFix(state, normalized);
|
|
256
244
|
await applyFolderizeFix(state, normalized, logger);
|
|
257
|
-
await applyDryFix(state, normalized);
|
|
258
245
|
await applySyncImportsFix(state, normalized);
|
|
259
246
|
await applyRemoveCommentsFix(state, normalized);
|
|
260
247
|
const result = attachDisciplineResult("fix", createFixResult(state));
|
package/dist/checks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-slugs.d.ts","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAU3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"rule-slugs.d.ts","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,cAAc,EAAE,sBAAsB,EAU3C,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,eAAe,EAKxC,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;;;;;;;CASnB,CAAC;AAEX,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,GAAG,CAAC,sBAAsB,CAAC,CAgB7B;AAED,iBAAS,kBAAkB,CACzB,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACxC,KAAK,EAAE,mBAAmB,GAAG,SAAS,EACtC,aAAa,CAAC,EAAE,oBAAoB,GACnC,sBAAsB,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,CAgC1D;AAED,iBAAS,aAAa,CACpB,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GACvC,OAAO,CAET;AAED,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AASvE,MAAM,cAAc,GAA6B;IAC/C,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,0BAA0B;IAC1B,cAAc;IACd,iBAAiB;IACjB,KAAK;IACL,gBAAgB;CACjB,CAAC;AAEF,MAAM,kBAAkB,GAAsB;IAC5C,cAAc;IACd,0BAA0B;IAC1B,cAAc;IACd,iBAAiB;
|
|
1
|
+
{"version":3,"file":"rule-slugs.js","sourceRoot":"","sources":["../../src/checks/rule-slugs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import type { NormalizedCheckCodeDisciplineOptions } from "../../types.js";
|
|
2
1
|
import type { ScannedSourceFile } from "../../../imports/types.js";
|
|
3
2
|
import type { CodeDisciplineViolation } from "../../../shared/discipline-types.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare function collectDryCandidates(sourceFiles: ScannedSourceFile[], helpers: Map<string, DryHelperDescriptor>, options: NormalizedCheckCodeDisciplineOptions): Promise<DryCandidateDescriptor[]>;
|
|
7
|
-
declare function collectDrySourceDuplicateViolations(sourceFiles: ScannedSourceFile[], helpers: Map<string, DryHelperDescriptor>): Promise<CodeDisciplineViolation[]>;
|
|
8
|
-
export { collectDryCandidates, collectDrySourceDuplicateViolations, createDryViolation };
|
|
3
|
+
declare function collectDrySourceDuplicateViolations(sourceFiles: ScannedSourceFile[]): Promise<CodeDisciplineViolation[]>;
|
|
4
|
+
export { collectDrySourceDuplicateViolations };
|
|
9
5
|
//# sourceMappingURL=candidates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AA6QnF,iBAAe,mCAAmC,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAGvH;AAED,OAAO,EAAE,mCAAmC,EAAE,CAAC"}
|
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
import { parseSource } from "../../../imports/module-specifiers.js";
|
|
4
|
-
import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName
|
|
4
|
+
import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName } from "./fingerprint.js";
|
|
5
5
|
const MIN_SOURCE_DUPLICATE_CHARACTERS = 300;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
message: `${candidate.localName ?? "anonymous function"} duplicates ${canonical.localName ?? "function"} in ${canonical.filePath}`,
|
|
28
|
-
details: {
|
|
29
|
-
fixable: false,
|
|
30
|
-
reason: "source duplicate requires a canonical helper for autofix",
|
|
31
|
-
duplicateOf: {
|
|
32
|
-
filePath: canonical.filePath,
|
|
33
|
-
line: canonicalLine,
|
|
34
|
-
name: canonical.localName,
|
|
35
|
-
},
|
|
36
|
-
line: candidateLine,
|
|
37
|
-
usesOuterScope: candidate.usesOuterScope,
|
|
38
|
-
usesRestrictedRuntime: candidate.usesRestrictedRuntime,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
6
|
+
const MIN_NAME_DUPLICATE_CHARACTERS = 300;
|
|
7
|
+
const SIMILARITY_THRESHOLD = 0.99;
|
|
8
|
+
class DisjointSet {
|
|
9
|
+
constructor(size) {
|
|
10
|
+
this.parents = Array.from({ length: size }, (_, index) => index);
|
|
11
|
+
}
|
|
12
|
+
find(index) {
|
|
13
|
+
const parent = this.parents[index];
|
|
14
|
+
if (parent === index)
|
|
15
|
+
return index;
|
|
16
|
+
const root = this.find(parent);
|
|
17
|
+
this.parents[index] = root;
|
|
18
|
+
return root;
|
|
19
|
+
}
|
|
20
|
+
union(left, right) {
|
|
21
|
+
const leftRoot = this.find(left);
|
|
22
|
+
const rightRoot = this.find(right);
|
|
23
|
+
if (leftRoot === rightRoot)
|
|
24
|
+
return;
|
|
25
|
+
this.parents[rightRoot] = leftRoot;
|
|
26
|
+
}
|
|
41
27
|
}
|
|
42
28
|
function isFingerprintableFunction(node) {
|
|
43
29
|
return (ts.isFunctionDeclaration(node) && Boolean(node.body))
|
|
@@ -48,126 +34,187 @@ function isFingerprintableFunction(node) {
|
|
|
48
34
|
|| (ts.isSetAccessorDeclaration(node) && Boolean(node.body))
|
|
49
35
|
|| (ts.isConstructorDeclaration(node) && Boolean(node.body));
|
|
50
36
|
}
|
|
51
|
-
function
|
|
37
|
+
function normalizeFunctionName(name) {
|
|
38
|
+
const normalized = name?.trim().toLowerCase();
|
|
39
|
+
return normalized || undefined;
|
|
40
|
+
}
|
|
41
|
+
function isTopLevelFunction(node) {
|
|
42
|
+
if (ts.isFunctionDeclaration(node)) {
|
|
43
|
+
return ts.isSourceFile(node.parent);
|
|
44
|
+
}
|
|
45
|
+
const parent = node.parent;
|
|
46
|
+
if (!parent || !ts.isVariableDeclaration(parent))
|
|
47
|
+
return false;
|
|
48
|
+
const declarationList = parent.parent;
|
|
49
|
+
const statement = declarationList.parent;
|
|
50
|
+
return ts.isVariableDeclarationList(declarationList)
|
|
51
|
+
&& ts.isVariableStatement(statement)
|
|
52
|
+
&& ts.isSourceFile(statement.parent);
|
|
53
|
+
}
|
|
54
|
+
function buildDryFunctionDescriptor(node, sourceFile, file) {
|
|
52
55
|
const classification = resolveClassification(node);
|
|
53
56
|
if (classification === "unsupported")
|
|
54
57
|
return null;
|
|
55
58
|
const sourceText = node.getText(sourceFile).replace(/\s+/g, "");
|
|
56
|
-
if (sourceText.length < MIN_SOURCE_DUPLICATE_CHARACTERS)
|
|
57
|
-
return null;
|
|
58
59
|
const fingerprintState = createFunctionFingerprint(node, sourceFile);
|
|
59
|
-
|
|
60
|
-
return null;
|
|
60
|
+
const localName = resolveFunctionDisplayName(node, sourceFile);
|
|
61
61
|
return {
|
|
62
62
|
absolutePath: file.absolutePath,
|
|
63
|
+
characterCount: sourceText.length,
|
|
63
64
|
classification,
|
|
64
65
|
fingerprint: fingerprintState.fingerprint,
|
|
65
66
|
filePath: file.relativeFromProjectRoot,
|
|
66
|
-
localName: resolveFunctionDisplayName(node, sourceFile),
|
|
67
|
-
nodeStart: node.getStart(sourceFile),
|
|
68
|
-
sourceFile,
|
|
69
|
-
usesOuterScope: fingerprintState.usesOuterScope,
|
|
70
|
-
usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function resolveNonFixableReason(args) {
|
|
74
|
-
if (args.classification === "method")
|
|
75
|
-
return "methods are report-only in v1";
|
|
76
|
-
if (args.classification !== "standalone")
|
|
77
|
-
return "unsupported function shape";
|
|
78
|
-
if (!args.removalOk)
|
|
79
|
-
return "duplicate declaration cannot be removed safely";
|
|
80
|
-
if (args.usesOuterScope)
|
|
81
|
-
return "duplicate captures outer scope";
|
|
82
|
-
if (args.usesRestrictedRuntime)
|
|
83
|
-
return "duplicate depends on this, super, arguments, or new.target";
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
function buildDryCandidate(node, sourceFile, file, helpers) {
|
|
87
|
-
const classification = resolveClassification(node);
|
|
88
|
-
const localName = resolveStandaloneName(node);
|
|
89
|
-
const removal = resolveRemovalRange(node, sourceFile);
|
|
90
|
-
const fingerprintState = createFunctionFingerprint(node, sourceFile);
|
|
91
|
-
const helper = helpers.get(fingerprintState.fingerprint);
|
|
92
|
-
if (!helper)
|
|
93
|
-
return null;
|
|
94
|
-
const isSelf = helper.absolutePath === file.absolutePath
|
|
95
|
-
&& helper.nodeStart === node.getStart(sourceFile)
|
|
96
|
-
&& helper.nodeEnd === node.getEnd();
|
|
97
|
-
if (isSelf)
|
|
98
|
-
return null;
|
|
99
|
-
const safeToFix = classification === "standalone"
|
|
100
|
-
&& removal.ok
|
|
101
|
-
&& !fingerprintState.usesOuterScope
|
|
102
|
-
&& !fingerprintState.usesRestrictedRuntime
|
|
103
|
-
&& Boolean(localName);
|
|
104
|
-
return {
|
|
105
|
-
absolutePath: file.absolutePath,
|
|
106
|
-
classification,
|
|
107
|
-
fingerprint: fingerprintState.fingerprint,
|
|
108
|
-
filePath: file.relativeFromProjectRoot,
|
|
109
|
-
helper,
|
|
110
67
|
localName,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
usesOuterScope: fingerprintState.usesOuterScope,
|
|
115
|
-
usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
|
|
116
|
-
}),
|
|
117
|
-
removalEnd: removal.end,
|
|
118
|
-
removalStart: removal.start,
|
|
119
|
-
safeToFix,
|
|
68
|
+
normalizedName: normalizeFunctionName(localName),
|
|
69
|
+
nodeStart: node.getStart(sourceFile),
|
|
70
|
+
normalizedText: fingerprintState.fingerprint,
|
|
120
71
|
sourceFile,
|
|
72
|
+
topLevel: isTopLevelFunction(node),
|
|
121
73
|
usesOuterScope: fingerprintState.usesOuterScope,
|
|
122
74
|
usesRestrictedRuntime: fingerprintState.usesRestrictedRuntime,
|
|
123
75
|
};
|
|
124
76
|
}
|
|
125
|
-
async function
|
|
126
|
-
const
|
|
77
|
+
async function collectDryFunctions(sourceFiles) {
|
|
78
|
+
const functions = [];
|
|
127
79
|
for (const file of sourceFiles) {
|
|
128
80
|
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
129
81
|
const sourceFile = parseSource(text, file.absolutePath);
|
|
130
82
|
const visit = (node) => {
|
|
131
83
|
if (isFingerprintableFunction(node)) {
|
|
132
|
-
const
|
|
133
|
-
if (
|
|
134
|
-
|
|
84
|
+
const descriptor = buildDryFunctionDescriptor(node, sourceFile, file);
|
|
85
|
+
if (descriptor)
|
|
86
|
+
functions.push(descriptor);
|
|
135
87
|
}
|
|
136
88
|
ts.forEachChild(node, visit);
|
|
137
89
|
};
|
|
138
90
|
visit(sourceFile);
|
|
139
91
|
}
|
|
140
|
-
return
|
|
92
|
+
return functions.sort((left, right) => left.filePath.localeCompare(right.filePath) || left.nodeStart - right.nodeStart);
|
|
141
93
|
}
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
94
|
+
function getTrigrams(value) {
|
|
95
|
+
const padded = ` ${value} `;
|
|
96
|
+
const trigrams = new Set();
|
|
97
|
+
for (let index = 0; index <= padded.length - 3; index += 1) {
|
|
98
|
+
trigrams.add(padded.slice(index, index + 3));
|
|
99
|
+
}
|
|
100
|
+
return trigrams;
|
|
101
|
+
}
|
|
102
|
+
function jaccardSimilarity(left, right) {
|
|
103
|
+
let intersection = 0;
|
|
104
|
+
for (const entry of left) {
|
|
105
|
+
if (right.has(entry))
|
|
106
|
+
intersection += 1;
|
|
107
|
+
}
|
|
108
|
+
const union = left.size + right.size - intersection;
|
|
109
|
+
return union === 0 ? 1 : intersection / union;
|
|
110
|
+
}
|
|
111
|
+
function shouldCompareSimilarity(left, right) {
|
|
112
|
+
if (left.characterCount < MIN_SOURCE_DUPLICATE_CHARACTERS || right.characterCount < MIN_SOURCE_DUPLICATE_CHARACTERS)
|
|
113
|
+
return false;
|
|
114
|
+
const smaller = Math.min(left.normalizedText.length, right.normalizedText.length);
|
|
115
|
+
const larger = Math.max(left.normalizedText.length, right.normalizedText.length);
|
|
116
|
+
return smaller / larger >= 0.75;
|
|
117
|
+
}
|
|
118
|
+
function resolvePairSignals(left, right) {
|
|
119
|
+
const signals = [];
|
|
120
|
+
if (left.fingerprint === right.fingerprint && left.characterCount >= MIN_SOURCE_DUPLICATE_CHARACTERS && right.characterCount >= MIN_SOURCE_DUPLICATE_CHARACTERS) {
|
|
121
|
+
signals.push({ confidence: 1, signal: "exact-normalized" });
|
|
159
122
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
123
|
+
if (left.classification === "standalone"
|
|
124
|
+
&& right.classification === "standalone"
|
|
125
|
+
&& left.topLevel
|
|
126
|
+
&& right.topLevel
|
|
127
|
+
&& left.characterCount >= MIN_NAME_DUPLICATE_CHARACTERS
|
|
128
|
+
&& right.characterCount >= MIN_NAME_DUPLICATE_CHARACTERS
|
|
129
|
+
&& left.normalizedName
|
|
130
|
+
&& left.normalizedName === right.normalizedName) {
|
|
131
|
+
signals.push({ confidence: 1, signal: "matching-name" });
|
|
132
|
+
}
|
|
133
|
+
if (shouldCompareSimilarity(left, right)) {
|
|
134
|
+
const similarity = jaccardSimilarity(getTrigrams(left.normalizedText), getTrigrams(right.normalizedText));
|
|
135
|
+
if (similarity >= SIMILARITY_THRESHOLD) {
|
|
136
|
+
signals.push({ confidence: similarity, signal: "similar-structure" });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return signals;
|
|
140
|
+
}
|
|
141
|
+
function collectDuplicateGroups(functions) {
|
|
142
|
+
const disjointSet = new DisjointSet(functions.length);
|
|
143
|
+
const groupSignals = new Map();
|
|
144
|
+
for (let leftIndex = 0; leftIndex < functions.length; leftIndex += 1) {
|
|
145
|
+
for (let rightIndex = leftIndex + 1; rightIndex < functions.length; rightIndex += 1) {
|
|
146
|
+
const signals = resolvePairSignals(functions[leftIndex], functions[rightIndex]);
|
|
147
|
+
if (signals.length === 0)
|
|
148
|
+
continue;
|
|
149
|
+
disjointSet.union(leftIndex, rightIndex);
|
|
150
|
+
const key = `${leftIndex}:${rightIndex}`;
|
|
151
|
+
groupSignals.set(key, {
|
|
152
|
+
confidence: Math.max(...signals.map((signal) => signal.confidence)),
|
|
153
|
+
signals: new Set(signals.map((signal) => signal.signal)),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const indexesByRoot = new Map();
|
|
158
|
+
for (let index = 0; index < functions.length; index += 1) {
|
|
159
|
+
const root = disjointSet.find(index);
|
|
160
|
+
const indexes = indexesByRoot.get(root) ?? [];
|
|
161
|
+
indexes.push(index);
|
|
162
|
+
indexesByRoot.set(root, indexes);
|
|
163
|
+
}
|
|
164
|
+
const groups = [];
|
|
165
|
+
for (const indexes of indexesByRoot.values()) {
|
|
166
|
+
if (indexes.length < 2)
|
|
163
167
|
continue;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
for (const
|
|
167
|
-
|
|
168
|
+
let confidence = 0;
|
|
169
|
+
const signals = new Set();
|
|
170
|
+
for (const [key, entry] of groupSignals) {
|
|
171
|
+
const [left, right] = key.split(":").map((value) => Number.parseInt(value, 10));
|
|
172
|
+
if (!indexes.includes(left) || !indexes.includes(right))
|
|
173
|
+
continue;
|
|
174
|
+
confidence = Math.max(confidence, entry.confidence);
|
|
175
|
+
for (const signal of entry.signals)
|
|
176
|
+
signals.add(signal);
|
|
168
177
|
}
|
|
178
|
+
groups.push({
|
|
179
|
+
confidence,
|
|
180
|
+
functions: indexes.map((index) => functions[index]),
|
|
181
|
+
signals: [...signals].sort(),
|
|
182
|
+
});
|
|
169
183
|
}
|
|
170
|
-
return
|
|
184
|
+
return groups;
|
|
185
|
+
}
|
|
186
|
+
function formatFunctionLocation(descriptor) {
|
|
187
|
+
return descriptor.localName
|
|
188
|
+
? `${descriptor.filePath}#${descriptor.localName}`
|
|
189
|
+
: descriptor.filePath;
|
|
190
|
+
}
|
|
191
|
+
function createDryGroupViolation(group) {
|
|
192
|
+
const files = [...new Set(group.functions.map((descriptor) => descriptor.filePath))];
|
|
193
|
+
return {
|
|
194
|
+
rule: "dry",
|
|
195
|
+
fix: false,
|
|
196
|
+
filePath: "multiple files",
|
|
197
|
+
message: `function duplicates in files: ${files.join(", ")}`,
|
|
198
|
+
details: {
|
|
199
|
+
confidence: Number(group.confidence.toFixed(3)),
|
|
200
|
+
files,
|
|
201
|
+
fixable: false,
|
|
202
|
+
functions: group.functions.map((descriptor) => ({
|
|
203
|
+
classification: descriptor.classification,
|
|
204
|
+
filePath: descriptor.filePath,
|
|
205
|
+
line: descriptor.sourceFile.getLineAndCharacterOfPosition(descriptor.nodeStart).line + 1,
|
|
206
|
+
name: descriptor.localName,
|
|
207
|
+
topLevel: descriptor.topLevel,
|
|
208
|
+
})),
|
|
209
|
+
locations: group.functions.map(formatFunctionLocation),
|
|
210
|
+
reason: "duplicate function group requires human canonicalization",
|
|
211
|
+
signals: group.signals,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
async function collectDrySourceDuplicateViolations(sourceFiles) {
|
|
216
|
+
const functions = await collectDryFunctions(sourceFiles);
|
|
217
|
+
return collectDuplicateGroups(functions).map(createDryGroupViolation);
|
|
171
218
|
}
|
|
172
|
-
export {
|
|
219
|
+
export { collectDrySourceDuplicateViolations };
|
|
173
220
|
//# sourceMappingURL=candidates.js.map
|