@sasjs/lint 4.3.0 → 4.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/.github/CONTRIBUTING.md +45 -0
- package/.github/workflows/mutation-pr.yml +69 -0
- package/.github/workflows/mutation-weekly.yml +92 -0
- package/README.md +15 -3
- package/jest.config.js +49 -0
- package/jest.stryker.config.js +17 -0
- package/mutation-baseline.json +30 -0
- package/package.json +14 -2
- package/rules/file/noUndeclaredMacros.js +9 -2
- package/rules/file/noUndeclaredMacros.js.map +1 -1
- package/rules/file/noUnusedMacros.js +15 -7
- package/rules/file/noUnusedMacros.js.map +1 -1
- package/sasjslint-schema.json +1 -1
- package/scripts/mutation-gate.mjs +390 -0
- package/stryker.conf.json +19 -0
- package/utils/headerMacros.d.ts +22 -6
- package/utils/headerMacros.js +135 -43
- package/utils/headerMacros.js.map +1 -1
- package/utils/isIgnored.js +18 -3
- package/utils/isIgnored.js.map +1 -1
- package/utils/parseMacroCalls.d.ts +24 -3
- package/utils/parseMacroCalls.js +64 -4
- package/utils/parseMacroCalls.js.map +1 -1
package/utils/headerMacros.js
CHANGED
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.removeMacrosFromHeader = exports.addMacrosToHeader = exports.getHeaderMacros = void 0;
|
|
3
|
+
exports.removeMacrosFromHeader = exports.repairHeaderList = exports.addMacrosToHeader = exports.getHeaderMacros = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const LineEndings_1 = require("../types/LineEndings");
|
|
6
6
|
const getHeaderLinesCount_1 = require("./getHeaderLinesCount");
|
|
7
7
|
const splitText_1 = require("./splitText");
|
|
8
8
|
const sasMacrosHeader = /<h4>\s*SAS Macros\s*<\/h4>/i;
|
|
9
|
-
const otherMacrosHeader = /<h4>\s*Other Macros\s*<\/h4>/i;
|
|
10
9
|
const anyHeader = /<h4>/i;
|
|
11
10
|
const headerTag = '</h4>';
|
|
12
|
-
const listItem = /^(\s
|
|
11
|
+
const listItem = /^(\s*@\s*)(\w+)(\s+)(\S+)(.*)$/;
|
|
12
|
+
const lineTag = /^\s*@\s*(\w+)(?:\s|$)/;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
14
|
+
* The tags read as an entry: `li` itself, and the single-character slips that
|
|
15
|
+
* turn it into `il`, `l1` or `1i`. A line opening with any other tag is not an
|
|
16
|
+
* entry, and it is never converted into a macro declaration.
|
|
17
|
+
*/
|
|
18
|
+
const entryTags = new Set(['li', 'il', 'l1', '1i']);
|
|
19
|
+
/** The tag a line opens with, lowercased, or `null` for a line with none. */
|
|
20
|
+
const getLineTag = (line) => {
|
|
21
|
+
const match = lineTag.exec(line);
|
|
22
|
+
return match ? match[1].toLowerCase() : null;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Reads an entry, returning the macro name, the file token after the tag, and
|
|
26
|
+
* the column at which the name starts. The column is derived from the entry
|
|
27
|
+
* text rather than from a search for the name, so an entry such as `@li li.sas`
|
|
28
|
+
* reports the `li` after the tag, not the `li` inside it.
|
|
29
|
+
*
|
|
30
|
+
* The entry is the tag and one file token, and nothing after the token: the
|
|
31
|
+
* section is maintained by the formatter, and reading prose as a declaration is
|
|
32
|
+
* how a sentence on an `@li` line ends up rewritten or removed as an unused
|
|
33
|
+
* entry.
|
|
34
|
+
*
|
|
35
|
+
* A tag one slip away from `li` is read the same way, so `@il mf_a.sas` - the
|
|
36
|
+
* commonest way to mistype the tag - is a declaration rather than the end of
|
|
37
|
+
* the list. The formatter writes such an entry back with `@li`, so the typo is
|
|
38
|
+
* repaired instead of being reported forever or silently truncating the list.
|
|
18
39
|
*
|
|
19
40
|
* @param {string} text - the line, or the tail of a line, to read.
|
|
20
41
|
* @param {number} offset - the 0-based column at which `text` starts in the
|
|
@@ -24,30 +45,46 @@ const parseListItem = (text, offset = 0) => {
|
|
|
24
45
|
const match = listItem.exec(text);
|
|
25
46
|
if (!match)
|
|
26
47
|
return null;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
48
|
+
const [, prefix, tag, gap, payload, tail] = match;
|
|
49
|
+
if (!entryTags.has(tag.toLowerCase()))
|
|
50
|
+
return null;
|
|
51
|
+
if (tail.trim() !== '')
|
|
52
|
+
return null;
|
|
53
|
+
const normalised = payload.replace(/\\/g, '/');
|
|
30
54
|
const fileName = normalised.split('/').pop() || '';
|
|
31
55
|
const name = fileName.replace(/\.sas$/i, '');
|
|
32
56
|
if (!name)
|
|
33
57
|
return null;
|
|
34
|
-
const tokenOffset = entry.indexOf(firstToken);
|
|
35
58
|
const fileOffset = normalised.lastIndexOf('/') + 1;
|
|
36
|
-
const column = offset +
|
|
37
|
-
return { name, column };
|
|
59
|
+
const column = offset + prefix.length + tag.length + gap.length + fileOffset + 1;
|
|
60
|
+
return { name, payload, column };
|
|
38
61
|
};
|
|
39
62
|
/**
|
|
40
63
|
* Reads the `@li` entries of a section that starts at `sectionIndex`.
|
|
41
64
|
*
|
|
42
|
-
* A blank line ends the list unless the next non-blank line
|
|
43
|
-
* so a list broken up by a stray blank line is still read in full -
|
|
44
|
-
* formatter rewrites exactly the lines it read, and an entry it did not
|
|
45
|
-
* would be left behind and duplicated.
|
|
65
|
+
* A blank line ends the list unless the next non-blank line opens with an
|
|
66
|
+
* entry tag, so a list broken up by a stray blank line is still read in full -
|
|
67
|
+
* the formatter rewrites exactly the lines it read, and an entry it did not
|
|
68
|
+
* read would be left behind and duplicated.
|
|
69
|
+
*
|
|
70
|
+
* A line that opens with an entry tag but cannot be read as one - `@li` with no
|
|
71
|
+
* file, or a file followed by other words - does not end the list: the scan
|
|
72
|
+
* records it and keeps reading, so one unreadable line cannot hide the
|
|
73
|
+
* declarations below it. The section then cannot be rewritten safely, because
|
|
74
|
+
* the rewrite would replace the span that line sits in.
|
|
46
75
|
*
|
|
47
|
-
*
|
|
76
|
+
* Any other line ends the list, including one that opens with an unrelated tag
|
|
77
|
+
* (`@example`, `@param`). The entries above it are still readable and still
|
|
78
|
+
* rewritable, so the formatter keeps maintaining the list it understands and
|
|
79
|
+
* leaves the rest of the header alone.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} limit - the last line index the header can occupy.
|
|
82
|
+
* @returns the entries, the index of the first line after the last one, and
|
|
83
|
+
* the indices of the entry-tagged lines the scan could not read.
|
|
48
84
|
*/
|
|
49
85
|
const readSectionList = (lines, sectionIndex, limit) => {
|
|
50
86
|
const entries = [];
|
|
87
|
+
const malformed = [];
|
|
51
88
|
let end = sectionIndex + 1;
|
|
52
89
|
let index = sectionIndex + 1;
|
|
53
90
|
while (index < limit && index < lines.length) {
|
|
@@ -57,29 +94,36 @@ const readSectionList = (lines, sectionIndex, limit) => {
|
|
|
57
94
|
while (next < limit && next < lines.length && lines[next].trim() === '') {
|
|
58
95
|
next++;
|
|
59
96
|
}
|
|
60
|
-
|
|
97
|
+
const tag = next < limit && next < lines.length ? getLineTag(lines[next]) : null;
|
|
98
|
+
if (tag && entryTags.has(tag)) {
|
|
61
99
|
index = next;
|
|
62
100
|
continue;
|
|
63
101
|
}
|
|
64
102
|
break;
|
|
65
103
|
}
|
|
66
104
|
const parsed = parseListItem(line);
|
|
67
|
-
if (!parsed)
|
|
68
|
-
|
|
105
|
+
if (!parsed) {
|
|
106
|
+
const tag = getLineTag(line);
|
|
107
|
+
if (!tag || !entryTags.has(tag))
|
|
108
|
+
break;
|
|
109
|
+
malformed.push(index);
|
|
110
|
+
index++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
69
113
|
entries.push({
|
|
70
114
|
name: parsed.name,
|
|
71
|
-
|
|
115
|
+
payload: parsed.payload,
|
|
72
116
|
lineNumber: index + 1,
|
|
73
117
|
column: parsed.column
|
|
74
118
|
});
|
|
75
119
|
index++;
|
|
76
120
|
end = index;
|
|
77
121
|
}
|
|
78
|
-
return { entries, end };
|
|
122
|
+
return { entries, end, malformed };
|
|
79
123
|
};
|
|
80
124
|
/**
|
|
81
|
-
* Reads the macros declared in the
|
|
82
|
-
*
|
|
125
|
+
* Reads the macros declared in the `<h4> SAS Macros </h4>` section of a file
|
|
126
|
+
* header - the compile dependencies, and the only list `sasjs compile` reads.
|
|
83
127
|
* @param {string} text - the text content of the file.
|
|
84
128
|
* @param {LintConfig} config - the lint configuration, used for line endings.
|
|
85
129
|
* @returns {HeaderMacro[]} the declared macros, in the order they appear.
|
|
@@ -95,12 +139,7 @@ const getHeaderMacros = (text, config) => {
|
|
|
95
139
|
const macros = [];
|
|
96
140
|
for (let index = 0; index < headerLinesCount && index < lines.length; index++) {
|
|
97
141
|
const line = lines[index];
|
|
98
|
-
|
|
99
|
-
? 'sasMacros'
|
|
100
|
-
: otherMacrosHeader.test(line)
|
|
101
|
-
? 'otherMacros'
|
|
102
|
-
: null;
|
|
103
|
-
if (!section)
|
|
142
|
+
if (!sasMacrosHeader.test(line))
|
|
104
143
|
continue;
|
|
105
144
|
// An entry can share the line with the section tag.
|
|
106
145
|
const tagEnd = line.indexOf(headerTag) + headerTag.length;
|
|
@@ -110,8 +149,7 @@ const getHeaderMacros = (text, config) => {
|
|
|
110
149
|
name: trailing.name,
|
|
111
150
|
lineNumber: index + 1,
|
|
112
151
|
startColumnNumber: trailing.column,
|
|
113
|
-
endColumnNumber: trailing.column + trailing.name.length
|
|
114
|
-
section
|
|
152
|
+
endColumnNumber: trailing.column + trailing.name.length
|
|
115
153
|
});
|
|
116
154
|
}
|
|
117
155
|
readSectionList(lines, index, headerLinesCount).entries.forEach((entry) => {
|
|
@@ -119,8 +157,7 @@ const getHeaderMacros = (text, config) => {
|
|
|
119
157
|
name: entry.name,
|
|
120
158
|
lineNumber: entry.lineNumber,
|
|
121
159
|
startColumnNumber: entry.column,
|
|
122
|
-
endColumnNumber: entry.column + entry.name.length
|
|
123
|
-
section
|
|
160
|
+
endColumnNumber: entry.column + entry.name.length
|
|
124
161
|
});
|
|
125
162
|
});
|
|
126
163
|
}
|
|
@@ -159,8 +196,9 @@ const withSectionSpacing = (lines, sectionIndex, listEnd) => {
|
|
|
159
196
|
*
|
|
160
197
|
* Returns `null` when the section is absent, and `null` when it cannot be
|
|
161
198
|
* rewritten without disturbing the surrounding text: when the section shares a
|
|
162
|
-
* line with the header's closing `**`,
|
|
163
|
-
* with the section tag
|
|
199
|
+
* line with the header's closing `**`, when an `@li` entry shares the line
|
|
200
|
+
* with the section tag, or when the list carries a line the reader could not
|
|
201
|
+
* turn into an entry. In those cases the caller leaves the file alone, so a
|
|
164
202
|
* warning that cannot be resolved is preferable to a corrupted header.
|
|
165
203
|
*/
|
|
166
204
|
const findSasMacrosSection = (lines, headerLinesCount) => {
|
|
@@ -178,9 +216,20 @@ const findSasMacrosSection = (lines, headerLinesCount) => {
|
|
|
178
216
|
const tagEnd = lines[sectionIndex].indexOf(headerTag) + headerTag.length;
|
|
179
217
|
if (parseListItem(lines[sectionIndex].slice(tagEnd)))
|
|
180
218
|
return null;
|
|
181
|
-
const { entries, end } = readSectionList(lines, sectionIndex, headerLinesCount);
|
|
219
|
+
const { entries, end, malformed } = readSectionList(lines, sectionIndex, headerLinesCount);
|
|
220
|
+
// An unreadable line sits inside the span the rewrite replaces, so rewriting
|
|
221
|
+
// would delete it. Leave the section to its author instead.
|
|
222
|
+
if (malformed.length)
|
|
223
|
+
return null;
|
|
182
224
|
return { sectionIndex, entries, end };
|
|
183
225
|
};
|
|
226
|
+
/**
|
|
227
|
+
* Writes an entry back to a header line. The tag is always `@li`, the payload
|
|
228
|
+
* is the single file token the reader accepted, and the indentation is the
|
|
229
|
+
* section's - so a mistyped tag (`@il`) and entries indented to a different
|
|
230
|
+
* width are repaired by the same pass that rewrites the list.
|
|
231
|
+
*/
|
|
232
|
+
const formatEntry = (entry, indent) => `${indent}@li ${entry.payload}`;
|
|
184
233
|
/**
|
|
185
234
|
* Adds macro names to the `<h4> SAS Macros </h4>` section of a file header,
|
|
186
235
|
* merging them with the entries that are already listed, de-duplicating by
|
|
@@ -231,17 +280,17 @@ const addMacrosToHeader = (text, config, macros) => {
|
|
|
231
280
|
entries.forEach((entry) => {
|
|
232
281
|
const key = entry.name.toLowerCase();
|
|
233
282
|
if (!byName.has(key))
|
|
234
|
-
byName.set(key, { name: entry.name,
|
|
283
|
+
byName.set(key, { name: entry.name, payload: entry.payload });
|
|
235
284
|
});
|
|
236
285
|
macros.forEach((macro) => {
|
|
237
286
|
const key = macro.toLowerCase();
|
|
238
287
|
if (byName.has(key))
|
|
239
288
|
return;
|
|
240
|
-
byName.set(key, { name: macro,
|
|
289
|
+
byName.set(key, { name: macro, payload: `${macro}.sas` });
|
|
241
290
|
});
|
|
242
291
|
const sortedLines = [...byName.values()]
|
|
243
292
|
.sort((a, b) => compareMacroNames(a.name, b.name))
|
|
244
|
-
.map((entry) => entry.
|
|
293
|
+
.map((entry) => `${indent}@li ${entry.payload}`);
|
|
245
294
|
const result = [
|
|
246
295
|
...lines.slice(0, sectionIndex + 1),
|
|
247
296
|
...sortedLines,
|
|
@@ -250,6 +299,47 @@ const addMacrosToHeader = (text, config, macros) => {
|
|
|
250
299
|
return withSectionSpacing(result, sectionIndex, sectionIndex + 1 + sortedLines.length).join(lineEnding);
|
|
251
300
|
};
|
|
252
301
|
exports.addMacrosToHeader = addMacrosToHeader;
|
|
302
|
+
/**
|
|
303
|
+
* Writes the entries of the `<h4> SAS Macros </h4>` section back in their
|
|
304
|
+
* canonical shape, in place: `@li <file>` at the section's indentation.
|
|
305
|
+
*
|
|
306
|
+
* A mistyped tag (`@il`) and an entry indented to a different width are both
|
|
307
|
+
* read as declarations, so no diagnostic points at them and no other pass
|
|
308
|
+
* would touch them - this is the pass that repairs them. It edits only the
|
|
309
|
+
* lines whose text differs, so it never adds or removes a line, never re-spaces
|
|
310
|
+
* the section, and returns the text unchanged when there is nothing to repair
|
|
311
|
+
* or when the section cannot be rewritten safely.
|
|
312
|
+
*
|
|
313
|
+
* @param {string} text - the text content of the file.
|
|
314
|
+
* @param {LintConfig} config - the lint configuration, used for line endings.
|
|
315
|
+
* @returns {string} the updated text content.
|
|
316
|
+
*/
|
|
317
|
+
const repairHeaderList = (text, config) => {
|
|
318
|
+
if (!text)
|
|
319
|
+
return text;
|
|
320
|
+
const headerLinesCount = (0, getHeaderLinesCount_1.getHeaderLinesCount)(text, config);
|
|
321
|
+
if (!headerLinesCount)
|
|
322
|
+
return text;
|
|
323
|
+
const lines = (0, splitText_1.splitText)(text, config);
|
|
324
|
+
const section = findSasMacrosSection(lines, headerLinesCount);
|
|
325
|
+
if (!section)
|
|
326
|
+
return text;
|
|
327
|
+
const { sectionIndex, entries } = section;
|
|
328
|
+
const indent = lines[sectionIndex].match(/^\s*/)[0];
|
|
329
|
+
const lineEnding = config.lineEndings === LineEndings_1.LineEndings.CRLF ? '\r\n' : '\n';
|
|
330
|
+
const repaired = [...lines];
|
|
331
|
+
let changed = false;
|
|
332
|
+
entries.forEach((entry) => {
|
|
333
|
+
const index = entry.lineNumber - 1;
|
|
334
|
+
const formatted = formatEntry(entry, indent);
|
|
335
|
+
if (lines[index] === formatted)
|
|
336
|
+
return;
|
|
337
|
+
repaired[index] = formatted;
|
|
338
|
+
changed = true;
|
|
339
|
+
});
|
|
340
|
+
return changed ? repaired.join(lineEnding) : text;
|
|
341
|
+
};
|
|
342
|
+
exports.repairHeaderList = repairHeaderList;
|
|
253
343
|
/**
|
|
254
344
|
* Removes macro names from the `<h4> SAS Macros </h4>` section of a file
|
|
255
345
|
* header. The section header itself is kept, so an empty list remains a valid
|
|
@@ -258,7 +348,8 @@ exports.addMacrosToHeader = addMacrosToHeader;
|
|
|
258
348
|
*
|
|
259
349
|
* The file is returned unchanged when it has no Doxygen header, when the header
|
|
260
350
|
* has no `SAS Macros` section, when the section cannot be rewritten safely, or
|
|
261
|
-
* when none of the named macros are listed.
|
|
351
|
+
* when none of the named macros are listed. Normalising the entries is the job
|
|
352
|
+
* of `repairHeaderList`.
|
|
262
353
|
*
|
|
263
354
|
* @param {string} text - the text content of the file.
|
|
264
355
|
* @param {LintConfig} config - the lint configuration, used for line endings.
|
|
@@ -277,6 +368,7 @@ const removeMacrosFromHeader = (text, config, macros) => {
|
|
|
277
368
|
if (!section)
|
|
278
369
|
return text;
|
|
279
370
|
const { sectionIndex, entries, end } = section;
|
|
371
|
+
const indent = lines[sectionIndex].match(/^\s*/)[0];
|
|
280
372
|
const remove = new Set(macros.map((macro) => macro.toLowerCase()));
|
|
281
373
|
const kept = [];
|
|
282
374
|
const seen = new Set();
|
|
@@ -293,7 +385,7 @@ const removeMacrosFromHeader = (text, config, macros) => {
|
|
|
293
385
|
return;
|
|
294
386
|
}
|
|
295
387
|
seen.add(key);
|
|
296
|
-
kept.push(entry
|
|
388
|
+
kept.push(formatEntry(entry, indent));
|
|
297
389
|
});
|
|
298
390
|
if (!changed)
|
|
299
391
|
return text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerMacros.js","sourceRoot":"","sources":["../../src/utils/headerMacros.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"headerMacros.js","sourceRoot":"","sources":["../../src/utils/headerMacros.ts"],"names":[],"mappings":"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"}
|
package/utils/isIgnored.js
CHANGED
|
@@ -27,9 +27,24 @@ const isIgnored = (fPath, configuration) => __awaiter(void 0, void 0, void 0, fu
|
|
|
27
27
|
const config = configuration || (yield (0, _1.getLintConfig)());
|
|
28
28
|
const projectRoot = yield (0, _1.getProjectRoot)();
|
|
29
29
|
const gitIgnoreFilePath = path_1.default.join(projectRoot, '.gitignore');
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
// path.relative rather than stripping `projectRoot + sep` from the string: a
|
|
31
|
+
// separator or a normalisation the caller did not apply leaves the strip with
|
|
32
|
+
// nothing to remove, and the `ignore` package then receives an absolute path
|
|
33
|
+
// and rejects it with a RangeError. path.relative is lexical - a symlinked root
|
|
34
|
+
// still yields a `..`-prefixed path, which the guard below catches.
|
|
35
|
+
const relativePath = path_1.default.relative(projectRoot, fPath);
|
|
36
|
+
if (relativePath === '')
|
|
37
|
+
return false;
|
|
38
|
+
// On Windows, `path.relative` returns an absolute path when the two paths sit
|
|
39
|
+
// on different drives, which the two guards below cannot see; passing that on
|
|
40
|
+
// reaches `ignore` and throws the RangeError this function exists to avoid.
|
|
41
|
+
if (path_1.default.isAbsolute(relativePath))
|
|
42
|
+
return false;
|
|
43
|
+
// Nothing in a project's .gitignore can match a path outside it, and the
|
|
44
|
+
// `ignore` package rejects a path that escapes the root ("path should be a
|
|
45
|
+
// path.relative()d string"), so a caller passing one gets `false` rather than
|
|
46
|
+
// a RangeError.
|
|
47
|
+
if (relativePath === '..' || relativePath.startsWith(`..${path_1.default.sep}`))
|
|
33
48
|
return false;
|
|
34
49
|
let gitIgnoreFileContent = '';
|
|
35
50
|
if (yield (0, file_1.fileExists)(gitIgnoreFilePath))
|
package/utils/isIgnored.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isIgnored.js","sourceRoot":"","sources":["../../src/utils/isIgnored.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAwD;AACxD,gDAAuB;AACvB,oDAA2B;AAC3B,wBAAiD;AAGjD;;;;;GAKG;AACI,MAAM,SAAS,GAAG,CACvB,KAAa,EACb,aAA0B,EACR,EAAE;IACpB,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,gBAAa,GAAE,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAc,GAAE,CAAA;IAC1C,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"isIgnored.js","sourceRoot":"","sources":["../../src/utils/isIgnored.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAwD;AACxD,gDAAuB;AACvB,oDAA2B;AAC3B,wBAAiD;AAGjD;;;;;GAKG;AACI,MAAM,SAAS,GAAG,CACvB,KAAa,EACb,aAA0B,EACR,EAAE;IACpB,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,gBAAa,GAAE,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAc,GAAE,CAAA;IAC1C,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAE9D,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAEtD,IAAI,YAAY,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA;IAErC,8EAA8E;IAC9E,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,cAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAA;IAE/C,yEAAyE;IACzE,2EAA2E;IAC3E,8EAA8E;IAC9E,gBAAgB;IAChB,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,cAAI,CAAC,GAAG,EAAE,CAAC;QACnE,OAAO,KAAK,CAAA;IAEd,IAAI,oBAAoB,GAAG,EAAE,CAAA;IAE7B,IAAI,MAAM,IAAA,iBAAU,EAAC,iBAAiB,CAAC;QACrC,oBAAoB,GAAG,MAAM,IAAA,eAAQ,EAAC,iBAAiB,CAAC,CAAA;IAE1D,OAAO,IAAA,gBAAM,GAAE;SACZ,GAAG,CAAC,oBAAoB,CAAC;SACzB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;SACtB,OAAO,CAAC,YAAY,CAAC,CAAA;AAC1B,CAAC,CAAA,CAAA;AAtCY,QAAA,SAAS,aAsCrB"}
|
|
@@ -8,14 +8,32 @@ export interface MacroCall {
|
|
|
8
8
|
startColumnNumber: number;
|
|
9
9
|
endColumnNumber: number;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Options for the scan.
|
|
13
|
+
*/
|
|
14
|
+
export interface MacroCallScanOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Reports the invocations written inside the argument of a masking function
|
|
17
|
+
* (`%str` / `%nrstr`).
|
|
18
|
+
*
|
|
19
|
+
* The argument is text while the masking function runs, but the caller
|
|
20
|
+
* normally unquotes it later: `%mp_assert(iftrue=%str(%mf_existds(work.x)=1))`
|
|
21
|
+
* resolves `%mf_existds` when `%mp_assert` evaluates the condition. A caller
|
|
22
|
+
* that asks which macros a file uses - the `noUnusedMacros` side - sets this.
|
|
23
|
+
* A caller that asks which macros a file invokes in open code leaves it off,
|
|
24
|
+
* so text a file masks only in order to print it is not reported.
|
|
25
|
+
*/
|
|
26
|
+
includeMasked?: boolean;
|
|
27
|
+
}
|
|
11
28
|
/**
|
|
12
29
|
* Finds the macro invocations in a file.
|
|
13
30
|
*
|
|
14
31
|
* SAS resolves macro triggers inside double-quoted strings but not inside
|
|
15
32
|
* single-quoted strings, so a double-quoted string is scanned as code while a
|
|
16
33
|
* single-quoted string is opaque. Invocations inside block comments, macro
|
|
17
|
-
* comments, comment statements,
|
|
18
|
-
*
|
|
34
|
+
* comments, comment statements, data sections and embedded-language `submit`
|
|
35
|
+
* blocks are excluded. The argument of a masking function (`%str` / `%nrstr`)
|
|
36
|
+
* is excluded unless the caller asks for it with `includeMasked`.
|
|
19
37
|
*
|
|
20
38
|
* Every `%name` token is reported, including the macro language keywords and
|
|
21
39
|
* the macros that ship with SAS. Callers decide which names are interesting.
|
|
@@ -23,6 +41,9 @@ export interface MacroCall {
|
|
|
23
41
|
* @param {string} text - the text content to scan.
|
|
24
42
|
* @param {LintConfig} config - the lint configuration. It is accepted for
|
|
25
43
|
* symmetry with the other utilities and is not used by the scan.
|
|
44
|
+
* @param {MacroCallScanOptions} options - how much of the masked text to scan.
|
|
45
|
+
* The default skips the argument of a masking function; `includeMasked` scans
|
|
46
|
+
* it for invocations.
|
|
26
47
|
* @returns {MacroCall[]} the invocations, in the order they appear.
|
|
27
48
|
*/
|
|
28
|
-
export declare const parseMacroCalls: (text: string, config?: LintConfig) => MacroCall[];
|
|
49
|
+
export declare const parseMacroCalls: (text: string, config?: LintConfig, options?: MacroCallScanOptions) => MacroCall[];
|
package/utils/parseMacroCalls.js
CHANGED
|
@@ -12,14 +12,49 @@ const embeddedLanguageProc = /^proc\s+(lua|groovy)\b/i;
|
|
|
12
12
|
/** Matches the statement that closes an embedded-language block. */
|
|
13
13
|
const embeddedLanguageEnd = /^endsubmit\s*;/i;
|
|
14
14
|
const embeddedLanguageEndSearch = /endsubmit/i;
|
|
15
|
+
/**
|
|
16
|
+
* Finds the `%name` tokens inside the argument of a masking function.
|
|
17
|
+
*
|
|
18
|
+
* The argument is masked text rather than code, so a quote or a comment marker
|
|
19
|
+
* in it opens nothing. The scan therefore recognises only the escapes
|
|
20
|
+
* `%(` / `%)` and a `%name` token, and it does not report a `%name:` label.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} text - the whole file.
|
|
23
|
+
* @param {number} from - the offset at which the argument starts.
|
|
24
|
+
* @param {number} to - the offset at which it ends.
|
|
25
|
+
* @returns {{ name: string; offset: number }[]} the tokens, in order.
|
|
26
|
+
*/
|
|
27
|
+
const findMaskedCalls = (text, from, to) => {
|
|
28
|
+
const tokens = [];
|
|
29
|
+
let index = from;
|
|
30
|
+
while (index < to) {
|
|
31
|
+
if (text[index] === '%') {
|
|
32
|
+
if (text[index + 1] === '(' || text[index + 1] === ')') {
|
|
33
|
+
index += 2;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const macroName = macroNameStart.exec(text.slice(index, to));
|
|
37
|
+
if (macroName) {
|
|
38
|
+
if (text[index + macroName[0].length] !== ':') {
|
|
39
|
+
tokens.push({ name: macroName[1], offset: index });
|
|
40
|
+
}
|
|
41
|
+
index += macroName[0].length;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
index++;
|
|
46
|
+
}
|
|
47
|
+
return tokens;
|
|
48
|
+
};
|
|
15
49
|
/**
|
|
16
50
|
* Finds the macro invocations in a file.
|
|
17
51
|
*
|
|
18
52
|
* SAS resolves macro triggers inside double-quoted strings but not inside
|
|
19
53
|
* single-quoted strings, so a double-quoted string is scanned as code while a
|
|
20
54
|
* single-quoted string is opaque. Invocations inside block comments, macro
|
|
21
|
-
* comments, comment statements,
|
|
22
|
-
*
|
|
55
|
+
* comments, comment statements, data sections and embedded-language `submit`
|
|
56
|
+
* blocks are excluded. The argument of a masking function (`%str` / `%nrstr`)
|
|
57
|
+
* is excluded unless the caller asks for it with `includeMasked`.
|
|
23
58
|
*
|
|
24
59
|
* Every `%name` token is reported, including the macro language keywords and
|
|
25
60
|
* the macros that ship with SAS. Callers decide which names are interesting.
|
|
@@ -27,9 +62,12 @@ const embeddedLanguageEndSearch = /endsubmit/i;
|
|
|
27
62
|
* @param {string} text - the text content to scan.
|
|
28
63
|
* @param {LintConfig} config - the lint configuration. It is accepted for
|
|
29
64
|
* symmetry with the other utilities and is not used by the scan.
|
|
65
|
+
* @param {MacroCallScanOptions} options - how much of the masked text to scan.
|
|
66
|
+
* The default skips the argument of a masking function; `includeMasked` scans
|
|
67
|
+
* it for invocations.
|
|
30
68
|
* @returns {MacroCall[]} the invocations, in the order they appear.
|
|
31
69
|
*/
|
|
32
|
-
const parseMacroCalls = (text, config) => {
|
|
70
|
+
const parseMacroCalls = (text, config, options) => {
|
|
33
71
|
const calls = [];
|
|
34
72
|
if (!text)
|
|
35
73
|
return calls;
|
|
@@ -131,9 +169,13 @@ const parseMacroCalls = (text, config) => {
|
|
|
131
169
|
}
|
|
132
170
|
// Masking functions - the argument is data, not code. `%(` and `%)` are
|
|
133
171
|
// the escapes for literal parentheses inside the argument, so they do
|
|
134
|
-
// not affect the nesting depth.
|
|
172
|
+
// not affect the nesting depth. When the caller asks for masked text,
|
|
173
|
+
// the function name is skipped and the argument is scanned in place, so
|
|
174
|
+
// an invocation the file defers is still reported at its own position.
|
|
135
175
|
const maskingFunction = maskingFunctionStart.exec(text.slice(index));
|
|
136
176
|
if (maskingFunction) {
|
|
177
|
+
// The extent of the argument comes from the parenthesis depth, with
|
|
178
|
+
// `%(` and `%)` treated as escapes rather than as delimiters.
|
|
137
179
|
let depth = 0;
|
|
138
180
|
let end = index + maskingFunction[0].length - 1;
|
|
139
181
|
while (end < length) {
|
|
@@ -153,6 +195,24 @@ const parseMacroCalls = (text, config) => {
|
|
|
153
195
|
}
|
|
154
196
|
end++;
|
|
155
197
|
}
|
|
198
|
+
if (options === null || options === void 0 ? void 0 : options.includeMasked) {
|
|
199
|
+
// The argument is scanned for `%name` tokens only, never as code: a
|
|
200
|
+
// quote or a comment marker in it is data to SAS, and letting one
|
|
201
|
+
// open a string or a comment here would swallow the invocations that
|
|
202
|
+
// follow - which under-counts uses, the direction that makes the
|
|
203
|
+
// formatter delete a declaration the file needs.
|
|
204
|
+
const argumentStart = index + maskingFunction[0].length;
|
|
205
|
+
advanceTo(argumentStart);
|
|
206
|
+
findMaskedCalls(text, argumentStart, end).forEach((token) => {
|
|
207
|
+
advanceTo(token.offset);
|
|
208
|
+
calls.push({
|
|
209
|
+
name: token.name,
|
|
210
|
+
lineNumber,
|
|
211
|
+
startColumnNumber: columnNumber,
|
|
212
|
+
endColumnNumber: columnNumber + 1 + token.name.length
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
}
|
|
156
216
|
advanceTo(end);
|
|
157
217
|
atStatementStart = false;
|
|
158
218
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseMacroCalls.js","sourceRoot":"","sources":["../../src/utils/parseMacroCalls.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"parseMacroCalls.js","sourceRoot":"","sources":["../../src/utils/parseMacroCalls.ts"],"names":[],"mappings":"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"}
|