mirror of
https://github.com/sasjs/lint.git
synced 2025-12-10 17:34:36 +00:00
31 lines
933 B
TypeScript
31 lines
933 B
TypeScript
import { LineLintRule } from '../../types/LintRule'
|
|
import { LintRuleType } from '../../types/LintRuleType'
|
|
import { Severity } from '../../types/Severity'
|
|
|
|
const name = 'noEncodedPasswords'
|
|
const description = 'Disallow encoded passwords in SAS code.'
|
|
const message = 'Line contains encoded password'
|
|
const test = (value: string, lineNumber: number) => {
|
|
const regex = new RegExp(/{sas(\d{2,4}|enc)}[^;"'\s]*/, 'gi')
|
|
const matches = value.match(regex)
|
|
if (!matches || !matches.length) return []
|
|
return matches.map((match) => ({
|
|
message,
|
|
lineNumber,
|
|
startColumnNumber: value.indexOf(match) + 1,
|
|
endColumnNumber: value.indexOf(match) + match.length + 1,
|
|
severity: Severity.Error
|
|
}))
|
|
}
|
|
|
|
/**
|
|
* Lint rule that checks for the presence of encoded password(s) in a given line of text.
|
|
*/
|
|
export const noEncodedPasswords: LineLintRule = {
|
|
type: LintRuleType.Line,
|
|
name,
|
|
description,
|
|
message,
|
|
test
|
|
}
|