mirror of
https://github.com/sasjs/lint.git
synced 2025-12-10 17:34:36 +00:00
294 lines
10 KiB
JSON
294 lines
10 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,
|
|
"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,
|
|
"noGremlins": true,
|
|
"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]
|
|
},
|
|
"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]
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|