(formatter)
| 109 | } |
| 110 | |
| 111 | const sarifFormatter: FormatterCallback = function (formatter) { |
| 112 | formatter.on('end', (event) => { |
| 113 | const arrAllMessages = event.arrAllMessages |
| 114 | |
| 115 | // SARIF builder |
| 116 | const sarifBuilder = new SarifBuilder() |
| 117 | |
| 118 | // SARIF Run builder |
| 119 | const sarifRunBuilder = new SarifRunBuilder().initSimple({ |
| 120 | toolDriverName: 'HTMLHint', |
| 121 | toolDriverVersion: pkg.version, |
| 122 | url: 'https://htmlhint.com/', |
| 123 | }) |
| 124 | |
| 125 | // SARIF rules |
| 126 | const addedRuleSet = new Set<string>() |
| 127 | arrAllMessages.forEach((result) => { |
| 128 | result.messages.forEach((message) => { |
| 129 | const rule = message.rule |
| 130 | if (addedRuleSet.has(rule.id)) { |
| 131 | return |
| 132 | } |
| 133 | addedRuleSet.add(rule.id) |
| 134 | |
| 135 | const sarifRuleBuilder = new SarifRuleBuilder().initSimple({ |
| 136 | ruleId: rule.id, |
| 137 | shortDescriptionText: rule.description, |
| 138 | helpUri: rule.link, |
| 139 | }) |
| 140 | |
| 141 | sarifRunBuilder.addRule(sarifRuleBuilder) |
| 142 | }) |
| 143 | }) |
| 144 | |
| 145 | // Add SARIF results (individual errors) |
| 146 | arrAllMessages.forEach((result) => { |
| 147 | result.messages.forEach((message) => { |
| 148 | const sarifResultBuilder = new SarifResultBuilder() |
| 149 | const ruleId = message.rule.id |
| 150 | const sarifResultInit = { |
| 151 | level: |
| 152 | message.type === ReportType.info |
| 153 | ? 'note' |
| 154 | : (message.type.toString() as Result.level), |
| 155 | messageText: message.message, |
| 156 | ruleId: ruleId, |
| 157 | fileUri: path |
| 158 | .relative(process.cwd(), result.file) |
| 159 | .replace(/\\/g, '/'), |
| 160 | startLine: message.line, |
| 161 | startColumn: message.col, |
| 162 | endLine: message.line, |
| 163 | endColumn: message.col, |
| 164 | } as const |
| 165 | sarifResultBuilder.initSimple(sarifResultInit) |
| 166 | sarifRunBuilder.addResult(sarifResultBuilder) |
| 167 | }) |
| 168 | }) |
nothing calls this directly
no test coverage detected