@sasjs/lint 2.3.1 → 2.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/README.md +23 -0
- package/package.json +1 -1
- package/rules/file/hasRequiredMacroOptions.d.ts +5 -0
- package/rules/file/hasRequiredMacroOptions.js +44 -0
- package/rules/file/hasRequiredMacroOptions.js.map +1 -0
- package/rules/file/index.d.ts +1 -0
- package/rules/file/index.js +3 -1
- package/rules/file/index.js.map +1 -1
- package/sasjslint-schema.json +29 -2
- package/types/LintConfig.d.ts +1 -0
- package/types/LintConfig.js +20 -0
- package/types/LintConfig.js.map +1 -1
package/README.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
Our goal is to help SAS developers everywhere spend less time on code reviews, bug fixing and arguing about standards - and more time delivering extraordinary business value.
|
|
10
10
|
|
|
11
|
+
*Note:* The SASjs project and its repositories are not affiliated with SAS Institute.
|
|
12
|
+
|
|
11
13
|
# Linting
|
|
12
14
|
|
|
13
15
|
@sasjs/lint is used by the following products:
|
|
@@ -252,6 +254,21 @@ This will highlight lines with trailing spaces. Trailing spaces serve no useful
|
|
|
252
254
|
- Default: true
|
|
253
255
|
- severity: WARNING
|
|
254
256
|
|
|
257
|
+
### hasRequiredMacroOptions
|
|
258
|
+
|
|
259
|
+
This will require macros to have the options listed as "requiredMacroOptions." This is helpful if you want to ensure all macros are SECURE.
|
|
260
|
+
|
|
261
|
+
- Default: false
|
|
262
|
+
- severity: WARNING
|
|
263
|
+
|
|
264
|
+
Example
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"hasRequiredMacroOptions": true,
|
|
268
|
+
"requiredMacroOptions": ["SECURE", "SRC"]
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
255
272
|
## severityLevel
|
|
256
273
|
|
|
257
274
|
This setting allows the default severity to be adjusted. This is helpful when running the lint in a pipeline or git hook. Simply list the rules you would like to adjust along with the desired setting ("warn" or "error"), eg as follows:
|
|
@@ -290,6 +307,12 @@ We're looking to implement the following rules:
|
|
|
290
307
|
|
|
291
308
|
We are also investigating some harder stuff, such as automatic indentation and code layout
|
|
292
309
|
|
|
310
|
+
# Further resources
|
|
311
|
+
|
|
312
|
+
* Using the linter on terminal: https://vid.4gl.io/w/vmJspCjcBoc5QtzwZkZRvi
|
|
313
|
+
* Longer intro to sasjs lint: https://vid.4gl.io/w/nDtkQFV1E8rtaa2BuM6U5s
|
|
314
|
+
* CLI docs: https://cli.sasjs.io/lint
|
|
315
|
+
|
|
293
316
|
# Sponsorship & Contributions
|
|
294
317
|
|
|
295
318
|
SASjs is an open source framework! Contributions are welcomed. If you would like to see a feature, because it would be useful in your project, but you don't have the requisite (Typescript) experience - then how about you engage us on a short project and we build it for you?
|
package/package.json
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasRequiredMacroOptions = void 0;
|
|
4
|
+
var types_1 = require("../../types");
|
|
5
|
+
var LintRuleType_1 = require("../../types/LintRuleType");
|
|
6
|
+
var parseMacros_1 = require("../../utils/parseMacros");
|
|
7
|
+
var name = 'hasRequiredMacroOptions';
|
|
8
|
+
var description = 'Enforce required macro options';
|
|
9
|
+
var message = 'Macro defined without required options';
|
|
10
|
+
var processOptions = function (macro, diagnostics, config) {
|
|
11
|
+
var _a, _b, _c;
|
|
12
|
+
var optionsPresent = (_c = (_b = (_a = macro.declaration.split('/')) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
|
|
13
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || types_1.Severity.Warning;
|
|
14
|
+
config === null || config === void 0 ? void 0 : config.requiredMacroOptions.forEach(function (option) {
|
|
15
|
+
if (!optionsPresent.includes(option)) {
|
|
16
|
+
diagnostics.push({
|
|
17
|
+
message: "Macro '" + macro.name + "' does not contain the required option '" + option + "'",
|
|
18
|
+
lineNumber: macro.startLineNumbers[0],
|
|
19
|
+
startColumnNumber: 0,
|
|
20
|
+
endColumnNumber: 0,
|
|
21
|
+
severity: severity
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var test = function (value, config) {
|
|
27
|
+
var diagnostics = [];
|
|
28
|
+
var macros = parseMacros_1.parseMacros(value, config);
|
|
29
|
+
macros.forEach(function (macro) {
|
|
30
|
+
processOptions(macro, diagnostics, config);
|
|
31
|
+
});
|
|
32
|
+
return diagnostics;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Lint rule that checks if a macro has the required options
|
|
36
|
+
*/
|
|
37
|
+
exports.hasRequiredMacroOptions = {
|
|
38
|
+
type: LintRuleType_1.LintRuleType.File,
|
|
39
|
+
name: name,
|
|
40
|
+
description: description,
|
|
41
|
+
message: message,
|
|
42
|
+
test: test
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=hasRequiredMacroOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasRequiredMacroOptions.js","sourceRoot":"","sources":["../../../src/rules/file/hasRequiredMacroOptions.ts"],"names":[],"mappings":";;;AAAA,qCAAqE;AAErE,yDAAuD;AACvD,uDAAqD;AAErD,IAAM,IAAI,GAAG,yBAAyB,CAAA;AACtC,IAAM,WAAW,GAAG,gCAAgC,CAAA;AACpD,IAAM,OAAO,GAAG,wCAAwC,CAAA;AAExD,IAAM,cAAc,GAAG,UACrB,KAAY,EACZ,WAAyB,EACzB,MAAmB;;IAEnB,IAAM,cAAc,GAAG,MAAA,MAAA,MAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,0CAAE,IAAI,EAAE,mCAAI,EAAE,CAAA;IACtE,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,gBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,oBAAoB,CAAC,OAAO,CAAC,UAAC,MAAM;QAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpC,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,YAAU,KAAK,CAAC,IAAI,gDAA2C,MAAM,MAAG;gBACjF,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACrC,iBAAiB,EAAE,CAAC;gBACpB,eAAe,EAAE,CAAC;gBAClB,QAAQ,UAAA;aACT,CAAC,CAAA;SACH;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,MAAmB;IAC9C,IAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,IAAM,MAAM,GAAG,yBAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEzC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;QACnB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,uBAAuB,GAAiB;IACnD,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
package/rules/file/index.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export { hasMacroParentheses } from './hasMacroParentheses';
|
|
|
4
4
|
export { lineEndings } from './lineEndings';
|
|
5
5
|
export { noNestedMacros } from './noNestedMacros';
|
|
6
6
|
export { strictMacroDefinition } from './strictMacroDefinition';
|
|
7
|
+
export { hasRequiredMacroOptions } from './hasRequiredMacroOptions';
|
package/rules/file/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.strictMacroDefinition = exports.noNestedMacros = exports.lineEndings = exports.hasMacroParentheses = exports.hasMacroNameInMend = exports.hasDoxygenHeader = void 0;
|
|
3
|
+
exports.hasRequiredMacroOptions = exports.strictMacroDefinition = exports.noNestedMacros = exports.lineEndings = exports.hasMacroParentheses = exports.hasMacroNameInMend = exports.hasDoxygenHeader = void 0;
|
|
4
4
|
var hasDoxygenHeader_1 = require("./hasDoxygenHeader");
|
|
5
5
|
Object.defineProperty(exports, "hasDoxygenHeader", { enumerable: true, get: function () { return hasDoxygenHeader_1.hasDoxygenHeader; } });
|
|
6
6
|
var hasMacroNameInMend_1 = require("./hasMacroNameInMend");
|
|
@@ -13,4 +13,6 @@ var noNestedMacros_1 = require("./noNestedMacros");
|
|
|
13
13
|
Object.defineProperty(exports, "noNestedMacros", { enumerable: true, get: function () { return noNestedMacros_1.noNestedMacros; } });
|
|
14
14
|
var strictMacroDefinition_1 = require("./strictMacroDefinition");
|
|
15
15
|
Object.defineProperty(exports, "strictMacroDefinition", { enumerable: true, get: function () { return strictMacroDefinition_1.strictMacroDefinition; } });
|
|
16
|
+
var hasRequiredMacroOptions_1 = require("./hasRequiredMacroOptions");
|
|
17
|
+
Object.defineProperty(exports, "hasRequiredMacroOptions", { enumerable: true, get: function () { return hasRequiredMacroOptions_1.hasRequiredMacroOptions; } });
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/rules/file/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/file/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/file/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,oHAAA,gBAAgB,OAAA;AACzB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,qEAAmE;AAA1D,kIAAA,uBAAuB,OAAA"}
|
package/sasjslint-schema.json
CHANGED
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
"noTrailingSpaces": true,
|
|
23
23
|
"lineEndings": "off",
|
|
24
24
|
"strictMacroDefinition": true,
|
|
25
|
-
"ignoreList": ["sajsbuild", "sasjsresults"]
|
|
25
|
+
"ignoreList": ["sajsbuild", "sasjsresults"],
|
|
26
|
+
"hasRequiredMacroOptions": false,
|
|
27
|
+
"requiredMacroOptions": []
|
|
26
28
|
},
|
|
27
29
|
"examples": [
|
|
28
30
|
{
|
|
@@ -43,7 +45,9 @@
|
|
|
43
45
|
"hasMacroParentheses": true,
|
|
44
46
|
"lineEndings": "crlf",
|
|
45
47
|
"strictMacroDefinition": true,
|
|
46
|
-
"ignoreList": ["sajsbuild", "sasjsresults"]
|
|
48
|
+
"ignoreList": ["sajsbuild", "sasjsresults"],
|
|
49
|
+
"hasRequiredMacroOptions": false,
|
|
50
|
+
"requiredMacroOptions": []
|
|
47
51
|
}
|
|
48
52
|
],
|
|
49
53
|
"properties": {
|
|
@@ -204,6 +208,22 @@
|
|
|
204
208
|
"default": ["sasjsbuild/", "sasjsresults/"],
|
|
205
209
|
"examples": ["sasjs/tests", "tmp/scratch.sas"]
|
|
206
210
|
},
|
|
211
|
+
"hasRequiredMacroOptions": {
|
|
212
|
+
"$id": "#/properties/hasRequiredMacroOptions",
|
|
213
|
+
"type": "boolean",
|
|
214
|
+
"title": "hasRequiredMacroOptions",
|
|
215
|
+
"description": "Enforces required macro options as defined by requiredMacroOptions",
|
|
216
|
+
"default": false,
|
|
217
|
+
"examples": [true, false]
|
|
218
|
+
},
|
|
219
|
+
"requiredMacroOptions": {
|
|
220
|
+
"$id": "#/properties/requiredMacroOptions",
|
|
221
|
+
"type": "array",
|
|
222
|
+
"title": "requiredMacroOptions",
|
|
223
|
+
"description": "An array of macro options to require all macros to include.",
|
|
224
|
+
"default": [],
|
|
225
|
+
"examples": ["['SECURE']", "['SRC', 'STMT']"]
|
|
226
|
+
},
|
|
207
227
|
"severityLevel": {
|
|
208
228
|
"$id": "#/properties/severityLevel",
|
|
209
229
|
"type": "object",
|
|
@@ -320,6 +340,13 @@
|
|
|
320
340
|
"type": "string",
|
|
321
341
|
"enum": ["error", "warn"],
|
|
322
342
|
"default": "warn"
|
|
343
|
+
},
|
|
344
|
+
"hasRequiredMacroOptions": {
|
|
345
|
+
"$id": "#/properties/severityLevel/hasRequiredMacroOptions",
|
|
346
|
+
"title": "hasRequiredMacroOptions",
|
|
347
|
+
"type": "string",
|
|
348
|
+
"enum": ["error", "warn"],
|
|
349
|
+
"default": "warn"
|
|
323
350
|
}
|
|
324
351
|
}
|
|
325
352
|
}
|
package/types/LintConfig.d.ts
CHANGED
package/types/LintConfig.js
CHANGED
|
@@ -57,6 +57,7 @@ var LintConfig = /** @class */ (function () {
|
|
|
57
57
|
this.lineEndings = LineEndings_1.LineEndings.LF;
|
|
58
58
|
this.defaultHeader = utils_1.getDefaultHeader();
|
|
59
59
|
this.severityLevel = {};
|
|
60
|
+
this.requiredMacroOptions = [];
|
|
60
61
|
if (json === null || json === void 0 ? void 0 : json.ignoreList) {
|
|
61
62
|
if (Array.isArray(json.ignoreList)) {
|
|
62
63
|
json.ignoreList.forEach(function (item) {
|
|
@@ -126,6 +127,25 @@ var LintConfig = /** @class */ (function () {
|
|
|
126
127
|
if ((json === null || json === void 0 ? void 0 : json.strictMacroDefinition) !== false) {
|
|
127
128
|
this.fileLintRules.push(file_1.strictMacroDefinition);
|
|
128
129
|
}
|
|
130
|
+
if (json === null || json === void 0 ? void 0 : json.hasRequiredMacroOptions) {
|
|
131
|
+
this.fileLintRules.push(file_1.hasRequiredMacroOptions);
|
|
132
|
+
if (json === null || json === void 0 ? void 0 : json.requiredMacroOptions) {
|
|
133
|
+
if (Array.isArray(json.requiredMacroOptions) &&
|
|
134
|
+
json.requiredMacroOptions.length > 0) {
|
|
135
|
+
json.requiredMacroOptions.forEach(function (item) {
|
|
136
|
+
if (typeof item === 'string') {
|
|
137
|
+
_this.requiredMacroOptions.push(item);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
throw new Error("Property \"requiredMacroOptions\" has invalid type of values. It can only contain strings.");
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw new Error("Property \"requiredMacroOptions\" can only be an array of strings.");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
129
149
|
if ((json === null || json === void 0 ? void 0 : json.noGremlins) !== false) {
|
|
130
150
|
this.lineLintRules.push(line_1.noGremlins);
|
|
131
151
|
if (json === null || json === void 0 ? void 0 : json.allowedGremlins) {
|
package/types/LintConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
|