@trebired/code-discipline 5.2.0 → 5.4.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/CHANGELOG.md +37 -0
- package/README.md +21 -19
- package/dist/checks/apply-fixes.d.ts +2 -2
- package/dist/checks/apply-fixes.d.ts.map +1 -1
- package/dist/checks/apply-fixes.js +6 -6
- package/dist/checks/apply-fixes.js.map +1 -1
- package/dist/checks/{fix-source-file-structure.d.ts → fix-redundant-path-segments.d.ts} +4 -4
- package/dist/checks/fix-redundant-path-segments.d.ts.map +1 -0
- package/dist/checks/{fix-source-file-structure.js → fix-redundant-path-segments.js} +22 -22
- package/dist/checks/fix-redundant-path-segments.js.map +1 -0
- package/dist/checks/index.js +6 -6
- package/dist/checks/index.js.map +1 -1
- package/dist/checks/parse-failures.d.ts +8 -0
- package/dist/checks/parse-failures.d.ts.map +1 -0
- package/dist/checks/parse-failures.js +39 -0
- package/dist/checks/parse-failures.js.map +1 -0
- package/dist/checks/rule-slugs.d.ts +1 -1
- package/dist/checks/rule-slugs.js +3 -3
- package/dist/checks/rule-slugs.js.map +1 -1
- package/dist/checks/rules/banned/patterns.d.ts.map +1 -1
- package/dist/checks/rules/banned/patterns.js +18 -6
- package/dist/checks/rules/banned/patterns.js.map +1 -1
- package/dist/checks/rules/blank-lines/generic.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/generic.js +24 -2
- package/dist/checks/rules/blank-lines/generic.js.map +1 -1
- package/dist/checks/rules/blank-lines/index.d.ts.map +1 -1
- package/dist/checks/rules/blank-lines/index.js +3 -2
- package/dist/checks/rules/blank-lines/index.js.map +1 -1
- package/dist/checks/rules/comments/ranges.d.ts.map +1 -1
- package/dist/checks/rules/comments/ranges.js +115 -1
- package/dist/checks/rules/comments/ranges.js.map +1 -1
- package/dist/checks/rules/comments/stripping.d.ts +1 -2
- package/dist/checks/rules/comments/stripping.d.ts.map +1 -1
- package/dist/checks/rules/comments/stripping.js +7 -93
- package/dist/checks/rules/comments/stripping.js.map +1 -1
- package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
- package/dist/checks/rules/dry/candidates.js +10 -4
- package/dist/checks/rules/dry/candidates.js.map +1 -1
- package/dist/checks/rules/dry/generic.d.ts.map +1 -1
- package/dist/checks/rules/dry/generic.js +43 -0
- package/dist/checks/rules/dry/generic.js.map +1 -1
- package/dist/checks/rules/dry/model.d.ts.map +1 -1
- package/dist/checks/rules/dry/model.js +5 -1
- package/dist/checks/rules/dry/model.js.map +1 -1
- package/dist/checks/rules/max/file-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/file-lines.js +7 -50
- package/dist/checks/rules/max/file-lines.js.map +1 -1
- package/dist/checks/rules/max/function-lines.d.ts.map +1 -1
- package/dist/checks/rules/max/function-lines.js +36 -7
- package/dist/checks/rules/max/function-lines.js.map +1 -1
- package/dist/checks/rules/min/declaration-name.d.ts.map +1 -1
- package/dist/checks/rules/min/declaration-name.js +70 -2
- package/dist/checks/rules/min/declaration-name.js.map +1 -1
- package/dist/checks/rules/redundant-path-segments/index.d.ts +6 -0
- package/dist/checks/rules/redundant-path-segments/index.d.ts.map +1 -0
- package/dist/checks/rules/redundant-path-segments/index.js +19 -0
- package/dist/checks/rules/redundant-path-segments/index.js.map +1 -0
- package/dist/checks/rules/redundant-path-segments/plan.d.ts +17 -0
- package/dist/checks/rules/redundant-path-segments/plan.d.ts.map +1 -0
- package/dist/checks/rules/{source-file-structure → redundant-path-segments}/plan.js +60 -47
- package/dist/checks/rules/redundant-path-segments/plan.js.map +1 -0
- package/dist/checks/rules/remove-comments.d.ts.map +1 -1
- package/dist/checks/rules/remove-comments.js +15 -78
- package/dist/checks/rules/remove-comments.js.map +1 -1
- package/dist/checks/severity.js +1 -1
- package/dist/checks/severity.js.map +1 -1
- package/dist/checks/types.d.ts +6 -8
- package/dist/checks/types.d.ts.map +1 -1
- package/dist/cli/logging.js +1 -1
- package/dist/cli/logging.js.map +1 -1
- package/dist/cli/{run-cli.d.ts → run.d.ts} +1 -1
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/{run-cli.js → run.js} +1 -1
- package/dist/cli/run.js.map +1 -0
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/normalize/check-options.d.ts.map +1 -1
- package/dist/config/normalize/check-options.js +8 -3
- package/dist/config/normalize/check-options.js.map +1 -1
- package/dist/config/normalize/rule-options.d.ts +3 -4
- package/dist/config/normalize/rule-options.d.ts.map +1 -1
- package/dist/config/normalize/rule-options.js +9 -16
- package/dist/config/normalize/rule-options.js.map +1 -1
- package/dist/imports/{check-imports.d.ts → check.d.ts} +1 -1
- package/dist/imports/check.d.ts.map +1 -0
- package/dist/imports/{check-imports.js → check.js} +8 -5
- package/dist/imports/check.js.map +1 -0
- package/dist/imports/{dead-imports.d.ts → dead.d.ts} +1 -1
- package/dist/imports/dead.d.ts.map +1 -0
- package/dist/imports/{dead-imports.js → dead.js} +1 -1
- package/dist/imports/dead.js.map +1 -0
- package/dist/imports/imports.js +1 -1
- package/dist/imports/imports.js.map +1 -1
- package/dist/imports/rewrite.js +1 -1
- package/dist/imports/rewrite.js.map +1 -1
- package/dist/imports/scan.d.ts.map +1 -1
- package/dist/imports/scan.js +19 -110
- package/dist/imports/scan.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native/native.d.ts +3 -2
- package/dist/native/native.d.ts.map +1 -1
- package/dist/native/native.js +13 -8
- package/dist/native/native.js.map +1 -1
- package/dist/shared/constants.d.ts +2 -3
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +3 -4
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/discipline-types.d.ts +1 -1
- package/dist/shared/discipline-types.d.ts.map +1 -1
- package/dist/shared/languages.d.ts +4 -2
- package/dist/shared/languages.d.ts.map +1 -1
- package/dist/shared/languages.js +27 -4
- package/dist/shared/languages.js.map +1 -1
- package/native/darwin-arm64.node +0 -0
- package/native/darwin-x64.node +0 -0
- package/native/linux-arm64-gnu.node +0 -0
- package/native/linux-x64-gnu.node +0 -0
- package/package.json +2 -2
- package/dist/checks/fix-source-file-structure.d.ts.map +0 -1
- package/dist/checks/fix-source-file-structure.js.map +0 -1
- package/dist/checks/rules/source-file-structure/index.d.ts +0 -6
- package/dist/checks/rules/source-file-structure/index.d.ts.map +0 -1
- package/dist/checks/rules/source-file-structure/index.js +0 -38
- package/dist/checks/rules/source-file-structure/index.js.map +0 -1
- package/dist/checks/rules/source-file-structure/plan.d.ts +0 -17
- package/dist/checks/rules/source-file-structure/plan.d.ts.map +0 -1
- package/dist/checks/rules/source-file-structure/plan.js.map +0 -1
- package/dist/cli/run-cli.d.ts.map +0 -1
- package/dist/cli/run-cli.js.map +0 -1
- package/dist/imports/check-imports.d.ts.map +0 -1
- package/dist/imports/check-imports.js.map +0 -1
- package/dist/imports/dead-imports.d.ts.map +0 -1
- package/dist/imports/dead-imports.js.map +0 -1
|
@@ -5,6 +5,7 @@ import { parseSource } from "../../../imports/module-specifiers.js";
|
|
|
5
5
|
import { isTypeScriptFamilyExtension } from "../../../shared/languages.js";
|
|
6
6
|
import { createFunctionFingerprint, resolveClassification, resolveFunctionDisplayName } from "./fingerprint.js";
|
|
7
7
|
import { collectGenericDryFunctionDescriptors } from "./generic.js";
|
|
8
|
+
import { collectWithParseFailure } from "../../parse-failures.js";
|
|
8
9
|
import { collectDuplicateGroups } from "./matching.js";
|
|
9
10
|
import { dryLanguageKey, normalizeDryFunctionName } from "./model.js";
|
|
10
11
|
const DRY_PARSE_CHUNK_SIZE = 250;
|
|
@@ -89,13 +90,14 @@ function emitDryParseChunk(args) {
|
|
|
89
90
|
elapsedMs: performance.now() - args.startedAt,
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
|
-
async function collectDryFunctions(sourceFiles, observer) {
|
|
93
|
+
async function collectDryFunctions(sourceFiles, parseFailures, observer) {
|
|
93
94
|
const startedAt = performance.now();
|
|
94
95
|
const functions = [];
|
|
95
96
|
for (let fileIndex = 0; fileIndex < sourceFiles.length; fileIndex += 1) {
|
|
96
97
|
const file = sourceFiles[fileIndex];
|
|
97
98
|
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
98
|
-
|
|
99
|
+
const descriptors = await collectWithParseFailure("dry", file.relativeFromProjectRoot, parseFailures, () => collectDryFunctionsForFile(file, text));
|
|
100
|
+
functions.push(...descriptors ?? []);
|
|
99
101
|
emitDryParseChunk({
|
|
100
102
|
completedItems: fileIndex + 1,
|
|
101
103
|
discoveredFunctions: functions.length,
|
|
@@ -146,8 +148,12 @@ function createDryGroupViolation(group) {
|
|
|
146
148
|
};
|
|
147
149
|
}
|
|
148
150
|
async function collectDrySourceDuplicateViolations(sourceFiles, rule, observer) {
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
+
const parseFailures = [];
|
|
152
|
+
const functions = await collectDryFunctions(sourceFiles, parseFailures, observer);
|
|
153
|
+
return [
|
|
154
|
+
...parseFailures,
|
|
155
|
+
...collectDuplicateGroups(functions, rule, observer).map(createDryGroupViolation),
|
|
156
|
+
];
|
|
151
157
|
}
|
|
152
158
|
export { collectDrySourceDuplicateViolations };
|
|
153
159
|
//# sourceMappingURL=candidates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA8RxD,iBAAS,oCAAoC,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAG5G;AAED,OAAO,EAAE,oCAAoC,EAAE,CAAC"}
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { collectLanguageFunctionDescriptors } from "../max/function-lines.js";
|
|
2
2
|
import { scanRustRawString } from "../comments/ranges.js";
|
|
3
3
|
import { maskCommentsForLineCounting } from "../max/code-lines.js";
|
|
4
|
+
import { isCppExtension, isCsharpExtension } from "../../../shared/languages.js";
|
|
4
5
|
import { stableSerialize } from "../../../shared/utils.js";
|
|
5
6
|
import { dryLanguageKey, normalizeDryFunctionName } from "./model.js";
|
|
6
7
|
const GENERIC_DRY_KEYWORDS = new Set([
|
|
8
|
+
"abstract",
|
|
7
9
|
"and",
|
|
8
10
|
"as",
|
|
9
11
|
"async",
|
|
12
|
+
"auto",
|
|
10
13
|
"await",
|
|
14
|
+
"base",
|
|
11
15
|
"break",
|
|
12
16
|
"case",
|
|
17
|
+
"catch",
|
|
13
18
|
"class",
|
|
14
19
|
"const",
|
|
20
|
+
"constexpr",
|
|
15
21
|
"continue",
|
|
16
22
|
"def",
|
|
17
23
|
"default",
|
|
18
24
|
"defer",
|
|
25
|
+
"delete",
|
|
19
26
|
"do",
|
|
20
27
|
"done",
|
|
21
28
|
"elif",
|
|
@@ -23,42 +30,66 @@ const GENERIC_DRY_KEYWORDS = new Set([
|
|
|
23
30
|
"enum",
|
|
24
31
|
"esac",
|
|
25
32
|
"except",
|
|
33
|
+
"explicit",
|
|
26
34
|
"false",
|
|
27
35
|
"fi",
|
|
36
|
+
"finally",
|
|
28
37
|
"fn",
|
|
29
38
|
"for",
|
|
39
|
+
"friend",
|
|
30
40
|
"func",
|
|
31
41
|
"function",
|
|
32
42
|
"if",
|
|
33
43
|
"impl",
|
|
34
44
|
"in",
|
|
45
|
+
"internal",
|
|
35
46
|
"interface",
|
|
36
47
|
"let",
|
|
37
48
|
"local",
|
|
38
49
|
"loop",
|
|
39
50
|
"match",
|
|
40
51
|
"mut",
|
|
52
|
+
"namespace",
|
|
53
|
+
"new",
|
|
41
54
|
"nil",
|
|
42
55
|
"none",
|
|
43
56
|
"not",
|
|
57
|
+
"noexcept",
|
|
44
58
|
"null",
|
|
59
|
+
"nullptr",
|
|
60
|
+
"operator",
|
|
45
61
|
"or",
|
|
62
|
+
"override",
|
|
46
63
|
"package",
|
|
47
64
|
"pass",
|
|
65
|
+
"private",
|
|
48
66
|
"property",
|
|
67
|
+
"protected",
|
|
49
68
|
"pub",
|
|
69
|
+
"public",
|
|
50
70
|
"range",
|
|
71
|
+
"readonly",
|
|
51
72
|
"return",
|
|
73
|
+
"sealed",
|
|
52
74
|
"self",
|
|
75
|
+
"static",
|
|
53
76
|
"struct",
|
|
77
|
+
"switch",
|
|
78
|
+
"template",
|
|
54
79
|
"then",
|
|
55
80
|
"this",
|
|
81
|
+
"throw",
|
|
56
82
|
"trait",
|
|
57
83
|
"true",
|
|
58
84
|
"try",
|
|
59
85
|
"type",
|
|
86
|
+
"typename",
|
|
60
87
|
"unsafe",
|
|
88
|
+
"using",
|
|
61
89
|
"var",
|
|
90
|
+
"virtual",
|
|
91
|
+
"void",
|
|
92
|
+
"volatile",
|
|
62
93
|
"while",
|
|
63
94
|
"with",
|
|
64
95
|
]);
|
|
@@ -136,6 +167,16 @@ function normalizeIdentifierToken(args) {
|
|
|
136
167
|
return args.identifier;
|
|
137
168
|
return canonicalIdentifier(args.identifier, args.state);
|
|
138
169
|
}
|
|
170
|
+
function normalizeCFamilyFunctionHeader(source) {
|
|
171
|
+
const parenIndex = source.indexOf("(");
|
|
172
|
+
if (parenIndex === -1)
|
|
173
|
+
return source;
|
|
174
|
+
const nameMatch = /[A-Za-z_]\w*$/u.exec(source.slice(0, parenIndex));
|
|
175
|
+
if (!nameMatch)
|
|
176
|
+
return source;
|
|
177
|
+
const nameStart = parenIndex - nameMatch[0].length;
|
|
178
|
+
return `${source.slice(0, nameStart)}__dry_function${source.slice(parenIndex)}`;
|
|
179
|
+
}
|
|
139
180
|
function normalizeFunctionHeader(source, extension) {
|
|
140
181
|
if (extension === ".go")
|
|
141
182
|
return source.replace(/^(\s*func(?:\s*\([^)]*\))?\s+)[A-Za-z_]\w*/u, "$1__dry_function");
|
|
@@ -149,6 +190,8 @@ function normalizeFunctionHeader(source, extension) {
|
|
|
149
190
|
if (extension === ".sh" || extension === ".bash" || extension === ".zsh") {
|
|
150
191
|
return source.replace(/^(\s*(?:function\s+)?)[A-Za-z_][\w-]*(\s*(?:\(\s*\))?\s*\{)/u, "$1__dry_function$2");
|
|
151
192
|
}
|
|
193
|
+
if (isCppExtension(extension) || isCsharpExtension(extension))
|
|
194
|
+
return normalizeCFamilyFunctionHeader(source);
|
|
152
195
|
return source.replace(/^(\s*(?:(?:pub(?:\([^)]*\))?|async|const|unsafe)\s+)*fn\s+)[A-Za-z_]\w*/u, "$1__dry_function");
|
|
153
196
|
}
|
|
154
197
|
function tokenizeGenericDryText(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAA2B,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/generic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAavD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,YAAY,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,iBAAS,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAEnF;AAED,iBAAS,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED,iBAAS,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsDry, } from "../../../shared/languages.js";
|
|
1
|
+
import { isCppExtension, isCsharpExtension, isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsDry, } from "../../../shared/languages.js";
|
|
2
2
|
function filterDrySourceFiles(sourceFiles) {
|
|
3
3
|
return sourceFiles.filter((file) => supportsDry(file.extension));
|
|
4
4
|
}
|
|
@@ -9,6 +9,10 @@ function dryLanguageKey(extension) {
|
|
|
9
9
|
return "go";
|
|
10
10
|
if (isRustExtension(extension))
|
|
11
11
|
return "rust";
|
|
12
|
+
if (isCppExtension(extension))
|
|
13
|
+
return "cpp";
|
|
14
|
+
if (isCsharpExtension(extension))
|
|
15
|
+
return "csharp";
|
|
12
16
|
if (isPythonExtension(extension))
|
|
13
17
|
return "python";
|
|
14
18
|
if (isShellExtension(extension))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,WAAW,GACZ,MAAM,eAAe,CAAC;AAoBvB,SAAS,oBAAoB,CAAC,WAAgC;IAC5D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,YAAY,CAAC;IAChE,IAAI,aAAa,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAwB;IACxD,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/checks/rules/dry/model.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,WAAW,GACZ,MAAM,eAAe,CAAC;AAoBvB,SAAS,oBAAoB,CAAC,WAAgC;IAC5D,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,YAAY,CAAC;IAChE,IAAI,aAAa,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,iBAAiB,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAwB;IACxD,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/file-lines.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/file-lines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAI7D,iBAAe,mBAAmB,CAChC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAepC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
4
|
-
import { countCodeLines, countPhysicalLines, maskCommentsForLineCounting } from "./code-lines.js";
|
|
1
|
+
import { requireNativeBinding } from "../../../native/native.js";
|
|
2
|
+
import { createRuleProgress, emitRuleCompleted } from "../../progress.js";
|
|
5
3
|
async function runMaxFileLinesRule(sourceFiles, options) {
|
|
6
4
|
if (!options.rules.maxFileLines)
|
|
7
5
|
return [];
|
|
@@ -10,52 +8,11 @@ async function runMaxFileLinesRule(sourceFiles, options) {
|
|
|
10
8
|
rule: "max-file-lines",
|
|
11
9
|
totalItems: sourceFiles.length,
|
|
12
10
|
});
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
warning: true,
|
|
19
|
-
})));
|
|
20
|
-
emitRuleCompleted(progress, violations.length);
|
|
21
|
-
return violations;
|
|
22
|
-
}
|
|
23
|
-
const violations = [];
|
|
24
|
-
for (let index = 0; index < sourceFiles.length; index += 1) {
|
|
25
|
-
const file = sourceFiles[index];
|
|
26
|
-
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
27
|
-
const lineCount = countPhysicalLines(text);
|
|
28
|
-
const codeLineCount = countCodeLines(maskCommentsForLineCounting(text, file.extension));
|
|
29
|
-
if (codeLineCount > options.rules.maxFileLines.max) {
|
|
30
|
-
violations.push({
|
|
31
|
-
rule: "max-file-lines",
|
|
32
|
-
fix: false,
|
|
33
|
-
filePath: file.relativeFromProjectRoot,
|
|
34
|
-
message: `file has ${codeLineCount} lines and exceeds the limit of ${options.rules.maxFileLines.max}`,
|
|
35
|
-
details: {
|
|
36
|
-
lineCount: codeLineCount,
|
|
37
|
-
max: options.rules.maxFileLines.max,
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
emitRuleChunk(progress, index + 1, violations.length);
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
if (lineCount > options.rules.maxFileLines.max) {
|
|
44
|
-
violations.push({
|
|
45
|
-
rule: "max-file-lines",
|
|
46
|
-
fix: false,
|
|
47
|
-
filePath: file.relativeFromProjectRoot,
|
|
48
|
-
severity: "warning",
|
|
49
|
-
message: `file has ${lineCount} physical lines, but only ${codeLineCount} code lines count toward the limit of ${options.rules.maxFileLines.max}`,
|
|
50
|
-
details: {
|
|
51
|
-
lineCount,
|
|
52
|
-
codeLineCount,
|
|
53
|
-
max: options.rules.maxFileLines.max,
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
emitRuleChunk(progress, index + 1, violations.length);
|
|
58
|
-
}
|
|
11
|
+
const violations = JSON.parse(requireNativeBinding().runMaxFileLinesRule(JSON.stringify({
|
|
12
|
+
sourceFiles,
|
|
13
|
+
max: options.rules.maxFileLines.max,
|
|
14
|
+
warning: true,
|
|
15
|
+
})));
|
|
59
16
|
emitRuleCompleted(progress, violations.length);
|
|
60
17
|
return violations;
|
|
61
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/file-lines.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/file-lines.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,KAAK,UAAU,mBAAmB,CAChC,WAAgC,EAChC,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,WAAW,CAAC,MAAM;KAC/B,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;QACtF,WAAW;QACX,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG;QACnC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAA8B,CAAC;IAClC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"function-lines.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAevD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAS7D,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAoJF,iBAAS,kCAAkC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CASnH;AAED,iBAAe,uBAAuB,CACpC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAqFpC;AAED,OAAO,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -2,8 +2,9 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import ts from "typescript";
|
|
4
4
|
import { loadNativeBinding } from "../../../native/native.js";
|
|
5
|
+
import { collectWithParseFailure } from "../../parse-failures.js";
|
|
5
6
|
import { parseSource } from "../../../imports/module-specifiers.js";
|
|
6
|
-
import { isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsMaxFunctionLines, } from "../../../shared/languages.js";
|
|
7
|
+
import { isCppExtension, isCsharpExtension, isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isShellExtension, isTypeScriptFamilyExtension, supportsMaxFunctionLines, } from "../../../shared/languages.js";
|
|
7
8
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
8
9
|
import { getEndLine, getStartLine, isFunctionLikeWithBody, resolveFunctionKind, resolveFunctionName } from "../typescript-functions.js";
|
|
9
10
|
import { countCodeLinesInRange, maskCommentsForLineCounting } from "./code-lines.js";
|
|
@@ -48,6 +49,29 @@ function countBraceDelta(value) {
|
|
|
48
49
|
}
|
|
49
50
|
return delta;
|
|
50
51
|
}
|
|
52
|
+
const C_FAMILY_HEADER_EXCLUDED_LEADING_WORDS = new Set([
|
|
53
|
+
"if", "else", "for", "while", "do", "switch", "case", "default", "catch", "try", "finally",
|
|
54
|
+
"using", "lock", "foreach", "fixed", "checked", "unchecked", "namespace", "class", "struct",
|
|
55
|
+
"enum", "interface", "return", "throw", "new", "delete", "goto", "break", "continue",
|
|
56
|
+
]);
|
|
57
|
+
function isCFamilyHeaderStart(line) {
|
|
58
|
+
const trimmed = stripCommentsAndStrings(line).trim();
|
|
59
|
+
if (!trimmed || trimmed.endsWith(";") || trimmed.endsWith(":"))
|
|
60
|
+
return false;
|
|
61
|
+
if (trimmed.startsWith("#") || trimmed.startsWith("[") || trimmed.startsWith("@"))
|
|
62
|
+
return false;
|
|
63
|
+
if (!trimmed.includes("("))
|
|
64
|
+
return false;
|
|
65
|
+
const leadingWord = /[A-Za-z_]\w*/u.exec(trimmed)?.[0] ?? "";
|
|
66
|
+
return !C_FAMILY_HEADER_EXCLUDED_LEADING_WORDS.has(leadingWord);
|
|
67
|
+
}
|
|
68
|
+
function extractCFamilyFunctionName(header) {
|
|
69
|
+
const stripped = stripCommentsAndStrings(header);
|
|
70
|
+
const parenIndex = stripped.indexOf("(");
|
|
71
|
+
if (parenIndex === -1)
|
|
72
|
+
return "anonymous";
|
|
73
|
+
return /[A-Za-z_]\w*$/u.exec(stripped.slice(0, parenIndex))?.[0] ?? "anonymous";
|
|
74
|
+
}
|
|
51
75
|
function createPendingBlockFunction() {
|
|
52
76
|
return {
|
|
53
77
|
braceDepth: 0,
|
|
@@ -70,6 +94,7 @@ function collectBlockFunctionDescriptors(text, extension) {
|
|
|
70
94
|
const descriptors = [];
|
|
71
95
|
const lines = text.split(/\r?\n/);
|
|
72
96
|
const isGo = isGoExtension(extension);
|
|
97
|
+
const isCFamily = isCppExtension(extension) || isCsharpExtension(extension);
|
|
73
98
|
const headerStartPattern = isGo
|
|
74
99
|
? /^\s*func(?:\s*\([^)]*\))?\s+/u
|
|
75
100
|
: /^\s*(?:pub(?:\([^)]*\))?\s+)?(?:async\s+)?(?:const\s+)?(?:unsafe\s+)?fn\s+/u;
|
|
@@ -80,17 +105,20 @@ function collectBlockFunctionDescriptors(text, extension) {
|
|
|
80
105
|
for (let index = 0; index < lines.length; index += 1) {
|
|
81
106
|
const line = lines[index] ?? "";
|
|
82
107
|
if (!pending.header) {
|
|
83
|
-
|
|
108
|
+
const isHeaderStart = isCFamily ? isCFamilyHeaderStart(line) : headerStartPattern.test(line);
|
|
109
|
+
if (!isHeaderStart)
|
|
84
110
|
continue;
|
|
85
111
|
pending.header = line;
|
|
86
112
|
pending.startLine = index + 1;
|
|
87
113
|
pending.kind = isGo && /\bfunc\s*\(/u.test(line) ? "method" : "function";
|
|
88
|
-
pending.name = headerNamePattern.exec(line)?.[1] ?? "anonymous";
|
|
114
|
+
pending.name = isCFamily ? extractCFamilyFunctionName(pending.header) : (headerNamePattern.exec(line)?.[1] ?? "anonymous");
|
|
89
115
|
}
|
|
90
116
|
else {
|
|
91
117
|
pending.header = `${pending.header}\n${line}`;
|
|
92
118
|
if (!pending.name || pending.name === "anonymous") {
|
|
93
|
-
pending.name =
|
|
119
|
+
pending.name = isCFamily
|
|
120
|
+
? extractCFamilyFunctionName(pending.header)
|
|
121
|
+
: (headerNamePattern.exec(pending.header)?.[1] ?? pending.name);
|
|
94
122
|
}
|
|
95
123
|
}
|
|
96
124
|
if (pending.braceDepth === 0 && !stripCommentsAndStrings(pending.header).includes("{")) {
|
|
@@ -107,8 +135,9 @@ function collectBlockFunctionDescriptors(text, extension) {
|
|
|
107
135
|
function collectLanguageFunctionDescriptors(text, extension, filePath) {
|
|
108
136
|
if (isTypeScriptFamilyExtension(extension))
|
|
109
137
|
return collectTypeScriptFunctionDescriptors(parseSource(text, filePath));
|
|
110
|
-
if (isGoExtension(extension) || isRustExtension(extension))
|
|
138
|
+
if (isGoExtension(extension) || isRustExtension(extension) || isCppExtension(extension) || isCsharpExtension(extension)) {
|
|
111
139
|
return collectBlockFunctionDescriptors(text, extension);
|
|
140
|
+
}
|
|
112
141
|
if (isPythonExtension(extension))
|
|
113
142
|
return collectPythonFunctionDescriptors(text);
|
|
114
143
|
if (isShellExtension(extension))
|
|
@@ -147,8 +176,8 @@ async function runMaxFunctionLinesRule(sourceFiles, options) {
|
|
|
147
176
|
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
148
177
|
const extension = path.extname(file.absolutePath).toLowerCase();
|
|
149
178
|
const maskedText = maskCommentsForLineCounting(text, extension);
|
|
150
|
-
const functions = collectLanguageFunctionDescriptors(text, extension, file.absolutePath);
|
|
151
|
-
for (const descriptor of functions) {
|
|
179
|
+
const functions = await collectWithParseFailure("max-function-lines", file.relativeFromProjectRoot, violations, () => collectLanguageFunctionDescriptors(text, extension, file.absolutePath));
|
|
180
|
+
for (const descriptor of functions ?? []) {
|
|
152
181
|
const codeLineCount = countCodeLinesInRange(maskedText, descriptor.startLine, descriptor.endLine);
|
|
153
182
|
const physicalLineCount = descriptor.lineCount;
|
|
154
183
|
if (codeLineCount > options.rules.maxFunctionLines.max) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"function-lines.js","sourceRoot":"","sources":["../../../../src/checks/rules/max/function-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration-name.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/min/declaration-name.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"declaration-name.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/min/declaration-name.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAe7D,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAyW1E,iBAAe,yBAAyB,CACtC,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmCpC;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
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 { isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isScssExtension, isShellExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsMinDeclarationName, } from "../../../shared/languages.js";
|
|
4
|
+
import { isCppExtension, isCsharpExtension, isGoExtension, isPythonExtension, isQmlExtension, isRustExtension, isScssExtension, isShellExtension, isStyleExtension, isTypeScriptFamilyExtension, supportsMinDeclarationName, } from "../../../shared/languages.js";
|
|
5
|
+
import { collectLanguageFunctionDescriptors } from "../max/function-lines.js";
|
|
5
6
|
import { createRuleProgress, emitRuleChunk, emitRuleCompleted } from "../../progress.js";
|
|
6
7
|
import { getStartLine } from "../typescript-functions.js";
|
|
8
|
+
import { collectWithParseFailure } from "../../parse-failures.js";
|
|
7
9
|
import { stripCommentsAndStrings } from "../max/strip.js";
|
|
8
10
|
import { updatePythonTripleState } from "../max/python.js";
|
|
9
11
|
import { maskQmlCommentsAndStrings } from "../comments/qml.js";
|
|
@@ -127,6 +129,67 @@ function collectRustDeclarations(text) {
|
|
|
127
129
|
},
|
|
128
130
|
]);
|
|
129
131
|
}
|
|
132
|
+
function collectCFamilyFunctionDeclarations(text, extension, filePath) {
|
|
133
|
+
return collectLanguageFunctionDescriptors(text, extension, filePath).map((entry) => ({
|
|
134
|
+
kind: entry.kind,
|
|
135
|
+
line: entry.startLine,
|
|
136
|
+
name: entry.name,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
function collectCppDeclarations(text, extension, filePath) {
|
|
140
|
+
return [
|
|
141
|
+
...collectCFamilyFunctionDeclarations(text, extension, filePath),
|
|
142
|
+
...collectPatternDeclarations(stripCommentsAndStrings(text), [
|
|
143
|
+
{
|
|
144
|
+
kind: "namespace",
|
|
145
|
+
pattern: /^\s*namespace\s+([A-Za-z_]\w*)/u,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
kind: "class",
|
|
149
|
+
pattern: /^\s*(?:template\s*<[^>]*>\s*)?class\s+([A-Za-z_]\w*)/u,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
kind: "struct",
|
|
153
|
+
pattern: /^\s*(?:template\s*<[^>]*>\s*)?struct\s+([A-Za-z_]\w*)/u,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
kind: "enum",
|
|
157
|
+
pattern: /^\s*enum(?:\s+class)?\s+([A-Za-z_]\w*)/u,
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
kind: "using",
|
|
161
|
+
pattern: /^\s*using\s+([A-Za-z_]\w*)\s*=/u,
|
|
162
|
+
},
|
|
163
|
+
]),
|
|
164
|
+
];
|
|
165
|
+
}
|
|
166
|
+
function collectCsharpDeclarations(text, extension, filePath) {
|
|
167
|
+
return [
|
|
168
|
+
...collectCFamilyFunctionDeclarations(text, extension, filePath),
|
|
169
|
+
...collectPatternDeclarations(stripCommentsAndStrings(text), [
|
|
170
|
+
{
|
|
171
|
+
kind: "namespace",
|
|
172
|
+
pattern: /^\s*namespace\s+([A-Za-z_][\w.]*)/u,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
kind: "class",
|
|
176
|
+
pattern: /^\s*(?:(?:public|private|protected|internal|static|sealed|abstract|partial)\s+)*class\s+([A-Za-z_]\w*)/u,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
kind: "interface",
|
|
180
|
+
pattern: /^\s*(?:(?:public|private|protected|internal|partial)\s+)*interface\s+([A-Za-z_]\w*)/u,
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
kind: "struct",
|
|
184
|
+
pattern: /^\s*(?:(?:public|private|protected|internal|readonly|partial)\s+)*struct\s+([A-Za-z_]\w*)/u,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
kind: "enum",
|
|
188
|
+
pattern: /^\s*(?:(?:public|private|protected|internal)\s+)*enum\s+([A-Za-z_]\w*)/u,
|
|
189
|
+
},
|
|
190
|
+
]),
|
|
191
|
+
];
|
|
192
|
+
}
|
|
130
193
|
function collectPythonDeclarations(text) {
|
|
131
194
|
const declarations = [];
|
|
132
195
|
const state = { quote: null };
|
|
@@ -228,6 +291,10 @@ function collectLanguageDeclarations(text, extension, filePath) {
|
|
|
228
291
|
return collectGoDeclarations(text);
|
|
229
292
|
if (isRustExtension(extension))
|
|
230
293
|
return collectRustDeclarations(text);
|
|
294
|
+
if (isCppExtension(extension))
|
|
295
|
+
return collectCppDeclarations(text, extension, filePath);
|
|
296
|
+
if (isCsharpExtension(extension))
|
|
297
|
+
return collectCsharpDeclarations(text, extension, filePath);
|
|
231
298
|
if (isPythonExtension(extension))
|
|
232
299
|
return collectPythonDeclarations(text);
|
|
233
300
|
if (isQmlExtension(extension))
|
|
@@ -272,7 +339,8 @@ async function runMinDeclarationNameRule(sourceFiles, options) {
|
|
|
272
339
|
continue;
|
|
273
340
|
}
|
|
274
341
|
const text = await fs.readFile(file.absolutePath, "utf8");
|
|
275
|
-
|
|
342
|
+
const declarations = await collectWithParseFailure("min-declaration-name", file.relativeFromProjectRoot, violations, () => collectLanguageDeclarations(text, file.extension, file.absolutePath));
|
|
343
|
+
for (const declaration of declarations ?? []) {
|
|
276
344
|
const length = measureDeclarationName(declaration.name);
|
|
277
345
|
if (length >= options.rules.minDeclarationName.min)
|
|
278
346
|
continue;
|