@nielspeter/eess-ts 0.7.0 → 0.8.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/dist/builders/cross-layer-builder.d.ts.map +1 -1
- package/dist/builders/cross-layer-builder.js +6 -8
- package/dist/builders/cross-layer-builder.js.map +1 -1
- package/dist/builders/slice-rule-builder.d.ts.map +1 -1
- package/dist/builders/slice-rule-builder.js +7 -1
- package/dist/builders/slice-rule-builder.js.map +1 -1
- package/dist/conditions/function.d.ts.map +1 -1
- package/dist/conditions/function.js +22 -8
- package/dist/conditions/function.js.map +1 -1
- package/dist/conditions/reverse-dependency.d.ts.map +1 -1
- package/dist/conditions/reverse-dependency.js +16 -14
- package/dist/conditions/reverse-dependency.js.map +1 -1
- package/dist/conditions/structural.d.ts.map +1 -1
- package/dist/conditions/structural.js +28 -11
- package/dist/conditions/structural.js.map +1 -1
- package/dist/core/disk-set.d.ts.map +1 -1
- package/dist/core/disk-set.js +37 -2
- package/dist/core/disk-set.js.map +1 -1
- package/dist/core/project-relative.d.ts +108 -0
- package/dist/core/project-relative.d.ts.map +1 -1
- package/dist/core/project-relative.js +179 -2
- package/dist/core/project-relative.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/slice.d.ts.map +1 -1
- package/dist/models/slice.js +20 -16
- package/dist/models/slice.js.map +1 -1
- package/dist/predicates/identity.d.ts +2 -1
- package/dist/predicates/identity.d.ts.map +1 -1
- package/dist/predicates/identity.js +37 -38
- package/dist/predicates/identity.js.map +1 -1
- package/dist/presets/agent-guardrails.d.ts.map +1 -1
- package/dist/presets/agent-guardrails.js +65 -14
- package/dist/presets/agent-guardrails.js.map +1 -1
- package/dist/presets/boundaries.js +58 -16
- package/dist/presets/boundaries.js.map +1 -1
- package/dist/presets/recommended.d.ts +21 -6
- package/dist/presets/recommended.d.ts.map +1 -1
- package/dist/presets/recommended.js.map +1 -1
- package/dist/rules/errors.d.ts +17 -0
- package/dist/rules/errors.d.ts.map +1 -1
- package/dist/rules/errors.js +21 -0
- package/dist/rules/errors.js.map +1 -1
- package/dist/smells/duplicate-bodies.d.ts +1 -1
- package/dist/smells/duplicate-bodies.d.ts.map +1 -1
- package/dist/smells/duplicate-bodies.js +12 -11
- package/dist/smells/duplicate-bodies.js.map +1 -1
- package/dist/smells/sibling-files.d.ts.map +1 -1
- package/dist/smells/sibling-files.js +16 -7
- package/dist/smells/sibling-files.js.map +1 -1
- package/dist/smells/smell-builder.d.ts.map +1 -1
- package/dist/smells/smell-builder.js +15 -1
- package/dist/smells/smell-builder.js.map +1 -1
- package/package.json +1 -1
package/dist/rules/errors.js
CHANGED
|
@@ -5,6 +5,7 @@ import { newExpr } from '../helpers/matchers.js';
|
|
|
5
5
|
import { codeOfParameters, searchClassBody } from '../helpers/body-traversal.js';
|
|
6
6
|
import { classNotContain } from '../conditions/body-analysis.js';
|
|
7
7
|
import { functionNotContain } from '../conditions/body-analysis-function.js';
|
|
8
|
+
import { moduleNotContain } from '../conditions/body-analysis-module.js';
|
|
8
9
|
import { findSilentCatches, silentCatchMessage } from '../conditions/catch-analysis.js';
|
|
9
10
|
/**
|
|
10
11
|
* No throwing generic Error — use typed domain errors instead.
|
|
@@ -31,6 +32,26 @@ export function functionNoGenericErrors() {
|
|
|
31
32
|
export function functionNoTypeErrors() {
|
|
32
33
|
return functionNotContain(newExpr('TypeError'));
|
|
33
34
|
}
|
|
35
|
+
// ─── Module variants ─────────────────────────────────────────────
|
|
36
|
+
/**
|
|
37
|
+
* No throwing generic Error anywhere the FILE runs code — bug 0337.
|
|
38
|
+
*
|
|
39
|
+
* The third spelling of one rule, and the broadest: `noGenericErrors` reads a
|
|
40
|
+
* class, `functionNoGenericErrors` a function, this one the whole module. Each is
|
|
41
|
+
* the same `notContain(newExpr('Error'))` over a different subject, so there is no
|
|
42
|
+
* second derivation of what a generic error is.
|
|
43
|
+
*
|
|
44
|
+
* It exists because `agentGuardrails` built `no-generic-errors` over `functions()`
|
|
45
|
+
* while its own imperative says "Do NOT throw new Error()" — not "…in a
|
|
46
|
+
* function". Measured before this: a `throw new Error()` at top level and one in a
|
|
47
|
+
* class's static block were both reported as nothing.
|
|
48
|
+
*
|
|
49
|
+
* A rule reads exactly ONE of these three (bug 0333): the subject kinds nest, so
|
|
50
|
+
* running two for one rule id reports the same throw twice.
|
|
51
|
+
*/
|
|
52
|
+
export function moduleNoGenericErrors() {
|
|
53
|
+
return moduleNotContain(newExpr('Error'));
|
|
54
|
+
}
|
|
34
55
|
// ─── Silent catch detection ──────────────────────────────────────
|
|
35
56
|
/** Every catch clause; `noSilentCatch` decides which of them are silent. */
|
|
36
57
|
const catchClause = {
|
package/dist/rules/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/rules/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/rules/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAI3C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEvF;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,qEAAqE;AAErE,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,oEAAoE;AAEpE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,oEAAoE;AAEpE,4EAA4E;AAC5E,MAAM,WAAW,GAAsB;IACrC,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;CAC5C,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,CAAC,QAA4B,EAAE,OAAyB;YAC9D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;oBAC/E,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBACxC,IAAI,OAAO,KAAK,SAAS;wBAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;gBACrF,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,CAAC,QAAwB,EAAE,OAAyB;YAC1D,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;gBACzB,IAAI,CAAC,IAAI;oBAAE,SAAQ;gBACnB,4FAA4F;gBAC5F,8FAA8F;gBAC9F,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;oBACnE,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7C,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,WAAW,EAAE,+DAA+D;QAC5E,QAAQ,CAAC,QAAsB,EAAE,OAAyB;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAA;YACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;gBACxC,uFAAuF;gBACvF,qFAAqF;gBACrF,0FAA0F;gBAC1F,sFAAsF;gBACtF,2FAA2F;gBAC3F,0FAA0F;gBAC1F,4FAA4F;gBAC5F,yEAAyE;gBACzE,MAAM,UAAU,GAAG,eAAe,CAChC,aAAa,EACb,EAAE,CAAC,WAAW,EAAE,EAChB,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAClC,cAAc,CACf,CAAA;gBACD,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC9B,UAAU,CAAC,IAAI,CAAC;wBACd,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;wBACxD,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC5D,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;qBAC5B,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -38,7 +38,7 @@ export declare class DuplicateBodiesBuilder extends SmellBuilder {
|
|
|
38
38
|
/** Check if a file path passes all glob-based filters. */
|
|
39
39
|
/**
|
|
40
40
|
* The three matcher sets travel together as one `filters` — they are one
|
|
41
|
-
* configuration, and four positional
|
|
41
|
+
* configuration, and four positional matcher-array arguments in a row
|
|
42
42
|
* are exactly the transposition risk the parameter cap exists to prevent.
|
|
43
43
|
*/
|
|
44
44
|
private passesFileFilters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-bodies.d.ts","sourceRoot":"","sources":["../../src/smells/duplicate-bodies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"duplicate-bodies.d.ts","sourceRoot":"","sources":["../../src/smells/duplicate-bodies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAOjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAUrD,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,sBAAsB,CAAI;gBAEtB,OAAO,EAAE,WAAW;IAIhC,uDAAuD;IACvD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;;;;;;;OASG;IACH,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMtC;;;;;;;;;;;;OAYG;IACM,YAAY,IAAI,eAAe;IAOxC,SAAS,CAAC,MAAM,IAAI,aAAa,EAAE;IAOnC,SAAS,CAAC,QAAQ,IAAI,MAAM;IAqB5B,0DAA0D;IAC1D;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAqBzB,6DAA6D;IAC7D,OAAO,CAAC,aAAa;IAOrB,+DAA+D;IAC/D;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,QAAQ;IAIhB,gDAAgD;IAChD,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,wBAAwB;IA6BhC,2CAA2C;IAC3C;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,YAAY;IAepB;;;;;;;;;;;;;;OAcG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,eAAe;CAIxB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import picomatch from 'picomatch';
|
|
2
1
|
import path from 'node:path';
|
|
3
2
|
import { selectionMemo } from '@nielspeter/eess/internal';
|
|
4
3
|
import { SmellBuilder } from './smell-builder.js';
|
|
@@ -6,7 +5,7 @@ import { collectFunctions } from '../models/arch-function.js';
|
|
|
6
5
|
import { fingerprintAll, findSimilarPairs } from './similar-pairs.js';
|
|
7
6
|
import { anchorFile, clusterViolation, pairViolation } from './duplicate-report.js';
|
|
8
7
|
import { clusterPairs, clusterRank } from './clusters.js';
|
|
9
|
-
import {
|
|
8
|
+
import { anyMatchesPath, pathGlobMatchers } from '../core/project-relative.js';
|
|
10
9
|
/** Test file patterns for ignoreTests(). */
|
|
11
10
|
const TEST_PATTERNS = ['**/*.test.ts', '**/*.spec.ts', '**/__tests__/**'];
|
|
12
11
|
const selectionOf = selectionMemo();
|
|
@@ -85,14 +84,16 @@ export class DuplicateBodiesBuilder extends SmellBuilder {
|
|
|
85
84
|
/** Check if a file path passes all glob-based filters. */
|
|
86
85
|
/**
|
|
87
86
|
* The three matcher sets travel together as one `filters` — they are one
|
|
88
|
-
* configuration, and four positional
|
|
87
|
+
* configuration, and four positional matcher-array arguments in a row
|
|
89
88
|
* are exactly the transposition risk the parameter cap exists to prevent.
|
|
90
89
|
*/
|
|
91
|
-
passesFileFilters(
|
|
90
|
+
passesFileFilters(sf, filters) {
|
|
92
91
|
const { folderMatchers, ignoreMatchers, testMatchers } = filters;
|
|
93
|
-
// Both
|
|
94
|
-
// `
|
|
95
|
-
|
|
92
|
+
// Both views, for every set — bug 0036, through the one helper every path
|
|
93
|
+
// glob in `src/` now goes through (bug 0339). A project-relative
|
|
94
|
+
// `inFolder()` or `ignorePaths()` glob could never match an absolute path; a
|
|
95
|
+
// `'**\/'`-led one could never match from a project path with a dot-segment.
|
|
96
|
+
const hits = (ms) => anyMatchesPath(ms, sf, sf.getFilePath(), this.project.tsConfigPath);
|
|
96
97
|
if (folderMatchers.length > 0 && !hits(folderMatchers))
|
|
97
98
|
return false;
|
|
98
99
|
if (hits(ignoreMatchers))
|
|
@@ -133,12 +134,12 @@ export class DuplicateBodiesBuilder extends SmellBuilder {
|
|
|
133
134
|
}
|
|
134
135
|
collectFilteredFunctions() {
|
|
135
136
|
const sourceFiles = this.project.getSourceFiles();
|
|
136
|
-
const folderMatchers = this._folders
|
|
137
|
-
const ignoreMatchers = this._ignorePaths
|
|
138
|
-
const testMatchers = this._ignoreTests ? TEST_PATTERNS
|
|
137
|
+
const folderMatchers = pathGlobMatchers(this._folders);
|
|
138
|
+
const ignoreMatchers = pathGlobMatchers(this._ignorePaths);
|
|
139
|
+
const testMatchers = this._ignoreTests ? pathGlobMatchers(TEST_PATTERNS) : [];
|
|
139
140
|
const allFunctions = [];
|
|
140
141
|
for (const sf of sourceFiles) {
|
|
141
|
-
if (!this.passesFileFilters(sf
|
|
142
|
+
if (!this.passesFileFilters(sf, { folderMatchers, ignoreMatchers, testMatchers })) {
|
|
142
143
|
continue;
|
|
143
144
|
}
|
|
144
145
|
// Detectors scan for a property of the code, not a user-declared subject
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-bodies.js","sourceRoot":"","sources":["../../src/smells/duplicate-bodies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"duplicate-bodies.js","sourceRoot":"","sources":["../../src/smells/duplicate-bodies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sibling-files.d.ts","sourceRoot":"","sources":["../../src/smells/sibling-files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"sibling-files.d.ts","sourceRoot":"","sources":["../../src/smells/sibling-files.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAQ/D;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAChD;AAsBD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAWvD;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CA8CjF;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAWhG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAKxD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import picomatch from 'picomatch';
|
|
3
2
|
import { collectFunctions } from '../models/arch-function.js';
|
|
4
3
|
import { searchFunctionBody } from '../helpers/body-traversal.js';
|
|
4
|
+
import { anyMatchesPath, pathGlobMatchers } from '../core/project-relative.js';
|
|
5
5
|
/** Paths treated as tests when `.ignoreTests()` is on. */
|
|
6
6
|
const TEST_PATTERNS = ['**/*.test.ts', '**/*.spec.ts', '**/__tests__/**'];
|
|
7
7
|
/** Check if a source file contains any function matching the pattern. */
|
|
@@ -41,22 +41,31 @@ export function partitionByPattern(files, pattern, minLines) {
|
|
|
41
41
|
/** Group source files by parent folder, applying all filters. */
|
|
42
42
|
export function groupFilesByFolder(scope) {
|
|
43
43
|
const sourceFiles = scope.project.getSourceFiles();
|
|
44
|
-
const folderMatchers = scope.folders
|
|
45
|
-
const ignoreMatchers = scope.ignorePaths
|
|
46
|
-
const testMatchers = scope.ignoreTests ? TEST_PATTERNS
|
|
44
|
+
const folderMatchers = pathGlobMatchers(scope.folders);
|
|
45
|
+
const ignoreMatchers = pathGlobMatchers(scope.ignorePaths);
|
|
46
|
+
const testMatchers = scope.ignoreTests ? pathGlobMatchers(TEST_PATTERNS) : [];
|
|
47
47
|
const groups = new Map();
|
|
48
48
|
for (const sf of sourceFiles) {
|
|
49
49
|
const filePath = sf.getFilePath();
|
|
50
|
+
// Every set goes through the shared matcher — bug 0339, and reading the
|
|
51
|
+
// absolute path alone was two defects here. A project-relative
|
|
52
|
+
// `inFolder('src/**')` matched nothing (the fix bug 0036 made in
|
|
53
|
+
// `duplicate-bodies.ts` was never made in this twin, while the census
|
|
54
|
+
// classified the pair `'normalized'`), and an `inFolder('**\/src/**')`
|
|
55
|
+
// matched nothing from a project path holding a dot-segment, because
|
|
56
|
+
// picomatch's default `dot: false` stops `**` crossing it. Either way every
|
|
57
|
+
// file was grouped into no folder and the detector reported itself inert.
|
|
58
|
+
const matches = (ms) => anyMatchesPath(ms, sf, filePath, scope.project.tsConfigPath);
|
|
50
59
|
// Folder filter: if folders specified, file must match at least one
|
|
51
|
-
if (folderMatchers.length > 0 && !folderMatchers
|
|
60
|
+
if (folderMatchers.length > 0 && !matches(folderMatchers)) {
|
|
52
61
|
continue;
|
|
53
62
|
}
|
|
54
63
|
// Ignore paths filter
|
|
55
|
-
if (ignoreMatchers
|
|
64
|
+
if (matches(ignoreMatchers)) {
|
|
56
65
|
continue;
|
|
57
66
|
}
|
|
58
67
|
// Test file filter
|
|
59
|
-
if (testMatchers
|
|
68
|
+
if (matches(testMatchers)) {
|
|
60
69
|
continue;
|
|
61
70
|
}
|
|
62
71
|
const folder = path.dirname(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sibling-files.js","sourceRoot":"","sources":["../../src/smells/sibling-files.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"sibling-files.js","sourceRoot":"","sources":["../../src/smells/sibling-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smell-builder.d.ts","sourceRoot":"","sources":["../../src/smells/smell-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAc7D,8BAAsB,YAAa,SAAQ,eAAe;IAiD5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW;IAhDnD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAK;IACjC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAoB;IAC/C,SAAS,CAAC,YAAY,UAAQ;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAK;IACrC,SAAS,CAAC,cAAc,UAAQ;IAEhC;;;;;;;;OAQG;IACH,oEAAoE;cACjD,gBAAgB,IAAI,MAAM;cAI1B,aAAa,IAAI,MAAM,GAAG,SAAS;gBA4BvB,OAAO,EAAE,WAAW;IAInD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,+DAA+D;IAC/D,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMzB,+DAA+D;IAC/D,WAAW,IAAI,IAAI;IAMnB,sDAAsD;IACtD,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMrC,iFAAiF;IACjF,UAAU,IAAI,WAAW;IAIzB;;;;;;;;;;OAUG;IACM,KAAK,IAAI,SAAS,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"smell-builder.d.ts","sourceRoot":"","sources":["../../src/smells/smell-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAc7D,8BAAsB,YAAa,SAAQ,eAAe;IAiD5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW;IAhDnD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAK;IACjC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAoB;IAC/C,SAAS,CAAC,YAAY,UAAQ;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAK;IACrC,SAAS,CAAC,cAAc,UAAQ;IAEhC;;;;;;;;OAQG;IACH,oEAAoE;cACjD,gBAAgB,IAAI,MAAM;cAI1B,aAAa,IAAI,MAAM,GAAG,SAAS;gBA4BvB,OAAO,EAAE,WAAW;IAInD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,+DAA+D;IAC/D,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMzB,+DAA+D;IAC/D,WAAW,IAAI,IAAI;IAMnB,sDAAsD;IACtD,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMrC,iFAAiF;IACjF,UAAU,IAAI,WAAW;IAIzB;;;;;;;;;;OAUG;IACM,KAAK,IAAI,SAAS,QAAQ,EAAE;IAoCrC,2CAA2C;IAC3C,aAAa,IAAI,IAAI;IAMrB;;;;;;OAMG;cACgB,IAAI,IAAI,IAAI;IAO/B,8DAA8D;IAC9D,SAAS,CAAC,iBAAiB,IAAI,aAAa;IAI5C,8DAA8D;IAC9D,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,aAAa,EAAE;IAE5C;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM;CACtC"}
|
|
@@ -115,7 +115,21 @@ export class SmellBuilder extends TerminalBuilder {
|
|
|
115
115
|
globs() {
|
|
116
116
|
const trees = [];
|
|
117
117
|
if (this._folders.length > 0) {
|
|
118
|
-
trees.push(stampGlobs(
|
|
118
|
+
trees.push(stampGlobs(
|
|
119
|
+
// `every()`, and it is wrong — left alone deliberately, because the
|
|
120
|
+
// other reading is wrong in the worse direction. One `base` is
|
|
121
|
+
// collapsed over a SET whose runtime decides per glob, so a mixed
|
|
122
|
+
// `inFolder(['src/a/**', '*/b/**'])` has no honest answer here:
|
|
123
|
+
// `every` declares `'absolute'` and reports the working relative glob
|
|
124
|
+
// as dead (a false RED), while `some` declares `'normalized'` and lets
|
|
125
|
+
// the genuinely dead `'*/b/**'` — which `readsRootRelativePath`
|
|
126
|
+
// withholds the second view from — escape the `unanchored` branch
|
|
127
|
+
// entirely (a false GREEN). ADR-009 takes the red.
|
|
128
|
+
//
|
|
129
|
+
// The real answer is a per-glob base, which needs `globAnyOf` to accept
|
|
130
|
+
// one per child — a kernel surface change, recorded as bug 0341 rather
|
|
131
|
+
// than ridden in on 0339.
|
|
132
|
+
globAnyOf(this._folders, 'file-path', this._folders.every((g) => isProjectRelative(g)) ? 'normalized' : 'absolute'), 'discovery', (g) => `inFolder("${g.glob}")`));
|
|
119
133
|
}
|
|
120
134
|
for (const glob of this._ignorePaths) {
|
|
121
135
|
trees.push(stampGlobs(globAnyOf([glob], 'file-path'), 'exclusion', (g) => `ignorePaths("${g.glob}")`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smell-builder.js","sourceRoot":"","sources":["../../src/smells/smell-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"smell-builder.js","sourceRoot":"","sources":["../../src/smells/smell-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D;;;;;;;GAOG;AACH,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,MAAM,OAAgB,YAAa,SAAQ,eAAe;IAiDzB;IAhDrB,QAAQ,GAAa,EAAE,CAAA;IACvB,SAAS,GAAW,iBAAiB,CAAA;IACrC,YAAY,GAAG,KAAK,CAAA;IACpB,YAAY,GAAa,EAAE,CAAA;IAC3B,cAAc,GAAG,KAAK,CAAA;IAEhC;;;;;;;;OAQG;IACH,oEAAoE;IACjD,gBAAgB;QACjC,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAEkB,aAAa;QAC9B,MAAM,OAAO,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnF,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9F,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACpD,8EAA8E;QAC9E,oEAAoE;QACpE,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,qDAAqD;QACrD,4EAA4E;QAC5E,EAAE;QACF,6EAA6E;QAC7E,yEAAyE;QACzE,+EAA+E;QAC/E,6EAA6E;QAC7E,uEAAuE;QACvE,8EAA8E;QAC9E,yEAAyE;QACzE,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAA;QAC9D,OAAO,iBAAiB;YACtB,CAAC,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC7C,CAAC,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxC,2BAA2B,MAAM,CAAC,iBAAiB,CAAC,gCAAgC,CAAA;IAC5F,CAAC;IAED,YAA+B,OAAoB;QACjD,KAAK,EAAE,CAAA;QADsB,YAAO,GAAP,OAAO,CAAa;IAEnD,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAY;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+DAA+D;IAC/D,QAAQ,CAAC,CAAS;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+DAA+D;IAC/D,WAAW;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sDAAsD;IACtD,WAAW,CAAC,GAAG,KAAe;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iFAAiF;IACjF,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACM,KAAK;QACZ,MAAM,KAAK,GAAe,EAAE,CAAA;QAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,UAAU;YACR,oEAAoE;YACpE,+DAA+D;YAC/D,kEAAkE;YAClE,gEAAgE;YAChE,sEAAsE;YACtE,uEAAuE;YACvE,gEAAgE;YAChE,kEAAkE;YAClE,mDAAmD;YACnD,EAAE;YACF,wEAAwE;YACxE,uEAAuE;YACvE,0BAA0B;YAC1B,SAAS,CACP,IAAI,CAAC,QAAQ,EACb,WAAW,EACX,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAC7E,EACD,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAC/B,CACF,CAAA;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CACR,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,IAAI,CAAC,CAC3F,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,2CAA2C;IAC3C,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACgB,IAAI;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QAC1B,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnC,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,8DAA8D;IACpD,iBAAiB;QACzB,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACzE,CAAC;CAkBF"}
|