in server/src/eslintServer.ts [598:628]
function makeDiagnostic(settings: TextDocumentSettings, problem: ESLintProblem): [Diagnostic, RuleSeverity | undefined] {
const message = problem.message;
const startLine = typeof problem.line !== 'number' || Number.isNaN(problem.line) ? 0 : Math.max(0, problem.line - 1);
const startChar = typeof problem.column !== 'number' || Number.isNaN(problem.column) ? 0 : Math.max(0, problem.column - 1);
const endLine = typeof problem.endLine !== 'number' || Number.isNaN(problem.endLine) ? startLine : Math.max(0, problem.endLine - 1);
const endChar = typeof problem.endColumn !== 'number' || Number.isNaN(problem.endColumn) ? startChar : Math.max(0, problem.endColumn - 1);
const override = getSeverityOverride(problem.ruleId, settings.rulesCustomizations);
const result: Diagnostic = {
message: message,
severity: convertSeverityToDiagnosticWithOverride(problem.severity, override),
source: 'eslint',
range: {
start: { line: startLine, character: startChar },
end: { line: endLine, character: endChar }
}
};
if (problem.ruleId) {
const url = RuleMetaData.getUrl(problem.ruleId);
result.code = problem.ruleId;
if (url !== undefined) {
result.codeDescription = {
href: url
};
}
if (problem.ruleId === 'no-unused-vars') {
result.tags = [DiagnosticTag.Unnecessary];
}
}
return [result, override];
}