1
0
mirror of https://github.com/sasjs/lint.git synced 2025-12-10 17:34:36 +00:00
Files
lint/sasjslint-schema.json

317 lines
11 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/sasjs/lint/blob/main/sasjslint-schema.json",
"type": "object",
"title": "SASjs Lint Config File",
"description": "The SASjs Lint Config file provides the settings for customising SAS code style in your project.",
"default": {
"noEncodedPasswords": true,
"hasDoxygenHeader": true,
"defaultHeader": "/**{lineEnding} @file{lineEnding} @brief <Your brief here>{lineEnding} <h4> SAS Macros </h4>{lineEnding}**/",
"hasMacroNameInMend": false,
"hasMacroParentheses": true,
"indentationMultiple": 2,
"lowerCaseFileNames": true,
"maxLineLength": 80,
"maxHeaderLineLength": 80,
"noGremlins": true,
"noNestedMacros": true,
"noSpacesInFileNames": true,
"noTabs": true,
"noTrailingSpaces": true,
"lineEndings": "lf",
"strictMacroDefinition": true,
"ignoreList": ["sajsbuild", "sasjsresults"]
},
"examples": [
{
"noTrailingSpaces": true,
"noEncodedPasswords": true,
"hasDoxygenHeader": true,
"noSpacesInFileNames": true,
"lowerCaseFileNames": true,
"maxLineLength": 80,
"maxHeaderLineLength": 80,
"noGremlins": true,
"allowedGremlins": ["0x0080", "0x3000"],
"noTabs": true,
"indentationMultiple": 4,
"hasMacroNameInMend": true,
"noNestedMacros": true,
"hasMacroParentheses": true,
"lineEndings": "crlf",
"strictMacroDefinition": true,
"ignoreList": ["sajsbuild", "sasjsresults"]
}
],
"properties": {
"noEncodedPasswords": {
"$id": "#/properties/noEncodedPasswords",
"type": "boolean",
"title": "noEncodedPasswords",
"description": "Enforces no encoded passwords such as {SAS001} or {SASENC} in lines of SAS code. Shows an error when they are present.",
"default": true,
"examples": [true, false]
},
"hasDoxygenHeader": {
"$id": "#/properties/hasDoxygenHeader",
"type": "boolean",
"title": "hasDoxygenHeader",
"description": "Enforces the presence of a Doxygen header in the form of a comment block at the start of each SAS file. Shows a warning when one is absent.",
"default": true,
"examples": [true, false]
},
"defaultHeader": {
"$id": "#/properties/defaultHeader",
"type": "string",
"title": "defaultHeader",
"description": "This sets the default program header - applies when a SAS program does NOT begin with `/**`.",
"default": "/**{lineEnding} @file{lineEnding} @brief <Your brief here>{lineEnding} <h4> SAS Macros </h4>{lineEnding}**/",
"examples": []
},
"noGremlins": {
"$id": "#/properties/noGremlins",
"type": "boolean",
"title": "noGremlins",
"description": "Captures problematic characters such as zero-width whitespace and others that look valid but usually are not (such as the en dash)",
"default": [true],
"examples": [true, false]
},
"allowedGremlins": {
"$id": "#/properties/allowedGremlins",
"type": "array",
"items": {
"type": "string",
"pattern": "^0x[0-9A-Fa-f]{4}$"
},
"title": "allowedGremlins",
"description": "An array of hex codes that represents allowed gremlins.",
"default": [],
"examples": ["0x0080", "0x3000"]
},
"hasMacroNameInMend": {
"$id": "#/properties/hasMacroNameInMend",
"type": "boolean",
"title": "hasMacroNameInMend",
"description": "Enforces the presence of macro names in %mend statements. Shows a warning for %mend statements with missing or mismatched macro names.",
"default": false,
"examples": [true, false]
},
"hasMacroParentheses": {
"$id": "#/properties/hasMacroParentheses",
"type": "boolean",
"title": "hasMacroParentheses",
"description": "Enforces the presence of parentheses in macro definitions. Shows a warning for each macro defined without parentheses, or with spaces between the macro name and the opening parenthesis.",
"default": true,
"examples": [true, false]
},
"indentationMultiple": {
"$id": "#/properties/indentationMultiple",
"type": "number",
"title": "indentationMultiple",
"description": "Enforces a configurable multiple for the number of spaces for indentation. Shows a warning for lines that are not indented by a multiple of this number.",
"default": 2,
"examples": [2, 3, 4]
},
"lowerCaseFileNames": {
"$id": "#/properties/lowerCaseFileNames",
"type": "boolean",
"title": "lowerCaseFileNames",
"description": "Enforces no uppercase characters in file names. Shows a warning when they are present.",
"default": true,
"examples": [true, false]
},
"maxLineLength": {
"$id": "#/properties/maxLineLength",
"type": "number",
"title": "maxLineLength",
"description": "Enforces a configurable maximum line length. Shows a warning for lines exceeding this length.",
"default": 80,
"examples": [60, 80, 120]
},
"maxHeaderLineLength": {
"$id": "#/properties/maxHeaderLineLength",
"type": "number",
"title": "maxLineLength",
"description": "Enforces a configurable maximum line length for header section. Shows a warning for lines exceeding this length.",
"default": 80,
"examples": [60, 80, 120]
},
"noNestedMacros": {
"$id": "#/properties/noNestedMacros",
"type": "boolean",
"title": "noNestedMacros",
"description": "Enforces the absence of nested macro definitions. Shows a warning for each nested macro definition.",
"default": true,
"examples": [true, false]
},
"noSpacesInFileNames": {
"$id": "#/properties/noSpacesInFileNames",
"type": "boolean",
"title": "noSpacesInFileNames",
"description": "Enforces no spaces in file names. Shows a warning when they are present.",
"default": true,
"examples": [true, false]
},
"noTabs": {
"$id": "#/properties/noTabs",
"type": "boolean",
"title": "noTabs",
"description": "Enforces no indentation using tabs. Shows a warning when a line contains a tab.",
"default": true,
"examples": [true, false]
},
"noTrailingSpaces": {
"$id": "#/properties/noTrailingSpaces",
"type": "boolean",
"title": "noTrailingSpaces",
"description": "Enforces no trailing spaces in lines of SAS code. Shows a warning when they are present.",
"default": true,
"examples": [true, false]
},
"lineEndings": {
"$id": "#/properties/lineEndings",
"type": "string",
"title": "lineEndings",
"description": "Enforces the configured terminating character for each line. Shows a warning when incorrect line endings are present.",
"default": "lf",
"examples": ["lf", "crlf"]
},
"strictMacroDefinition": {
"$id": "#/properties/strictMacroDefinition",
"type": "boolean",
"title": "strictMacroDefinition",
"description": "Enforces Macro Definition syntax. Shows a warning when incorrect syntax is used.",
"default": true,
"examples": [true, false]
},
"ignoreList": {
"$id": "#/properties/ignoreList",
"type": "array",
"title": "ignoreList",
"description": "An array of paths or path patterns to ignore when linting. Any files or matching patterns in the .gitignore file will also be ignored.",
"default": ["sasjsbuild/", "sasjsresults/"],
"examples": ["sasjs/tests", "tmp/scratch.sas"]
},
"severityLevel": {
"$id": "#/properties/severityLevel",
"type": "object",
"title": "severityLevel",
"description": "An object which specifies the severity level of each rule.",
"default": {},
"examples": [
{
"hasDoxygenHeader": "warn",
"maxLineLength": "warn",
"noTrailingSpaces": "error"
},
{
"hasDoxygenHeader": "warn",
"maxLineLength": "error",
"noTrailingSpaces": "error"
}
],
"properties": {
"noEncodedPasswords": {
"$id": "#/properties/severityLevel/noEncodedPasswords",
"title": "noEncodedPasswords",
"type": "string",
"enum": ["error", "warn"],
"default": "error"
},
"hasDoxygenHeader": {
"$id": "#/properties/severityLevel/hasDoxygenHeader",
"title": "hasDoxygenHeader",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"noGremlins": {
"$id": "#/properties/severityLevel/noGremlins",
"title": "noGremlins",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"hasMacroNameInMend": {
"$id": "#/properties/severityLevel/hasMacroNameInMend",
"title": "hasMacroNameInMend",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"hasMacroParentheses": {
"$id": "#/properties/severityLevel/hasMacroParentheses",
"title": "hasMacroParentheses",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"indentationMultiple": {
"$id": "#/properties/severityLevel/indentationMultiple",
"title": "indentationMultiple",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"lowerCaseFileNames": {
"$id": "#/properties/severityLevel/lowerCaseFileNames",
"title": "lowerCaseFileNames",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"maxLineLength": {
"$id": "#/properties/severityLevel/maxLineLength",
"title": "maxLineLength",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"noNestedMacros": {
"$id": "#/properties/severityLevel/noNestedMacros",
"title": "noNestedMacros",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"noSpacesInFileNames": {
"$id": "#/properties/severityLevel/noSpacesInFileNames",
"title": "noSpacesInFileNames",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"noTabs": {
"$id": "#/properties/severityLevel/noTabs",
"title": "noTabs",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"noTrailingSpaces": {
"$id": "#/properties/severityLevel/noTrailingSpaces",
"title": "noTrailingSpaces",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"lineEndings": {
"$id": "#/properties/severityLevel/lineEndings",
"title": "lineEndings",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
},
"strictMacroDefinition": {
"$id": "#/properties/severityLevel/strictMacroDefinition",
"title": "strictMacroDefinition",
"type": "string",
"enum": ["error", "warn"],
"default": "warn"
}
}
}
}
}