function makeDiagnostic()

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];
}