From 037aaae593bba96b71d89c6f9bd5f14e3846e067 Mon Sep 17 00:00:00 2001 From: w0rp Date: Mon, 13 Nov 2017 23:36:15 +0000 Subject: [PATCH] #852 - Capture error codes for TSLint --- ale_linters/typescript/tslint.vim | 14 +++++++++----- test/handler/test_tslint_handler.vader | 17 +++++++++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/ale_linters/typescript/tslint.vim b/ale_linters/typescript/tslint.vim index e366af8..a1bfbb7 100644 --- a/ale_linters/typescript/tslint.vim +++ b/ale_linters/typescript/tslint.vim @@ -28,17 +28,21 @@ function! ale_linters#typescript#tslint#Handle(buffer, lines) abort continue endif - call add(l:output, { + let l:item = { \ 'filename': ale#path#GetAbsPath(l:dir, l:error.name), \ 'type': (get(l:error, 'ruleSeverity', '') is# 'WARNING' ? 'W' : 'E'), - \ 'text': has_key(l:error, 'ruleName') - \ ? l:error.ruleName . ': ' . l:error.failure - \ : l:error.failure, + \ 'text': l:error.failure, \ 'lnum': l:error.startPosition.line + 1, \ 'col': l:error.startPosition.character + 1, \ 'end_lnum': l:error.endPosition.line + 1, \ 'end_col': l:error.endPosition.character + 1, - \}) + \} + + if has_key(l:error, 'ruleName') + let l:item.code = l:error.ruleName + endif + + call add(l:output, l:item) endfor return l:output diff --git a/test/handler/test_tslint_handler.vader b/test/handler/test_tslint_handler.vader index db6294c..d6ed353 100644 --- a/test/handler/test_tslint_handler.vader +++ b/test/handler/test_tslint_handler.vader @@ -28,7 +28,8 @@ Execute(The tslint handler should parse lines correctly): \ 'end_lnum': 1, \ 'type': 'E', \ 'end_col': 15, - \ 'text': 'semicolon: Missing semicolon' + \ 'text': 'Missing semicolon', + \ 'code': 'semicolon', \ }, \ { \ 'lnum': 2, @@ -37,7 +38,7 @@ Execute(The tslint handler should parse lines correctly): \ 'end_lnum': 3, \ 'type': 'W', \ 'end_col': 12, - \ 'text': 'Something else' + \ 'text': 'Something else', \ }, \ { \ 'lnum': 2, @@ -46,7 +47,8 @@ Execute(The tslint handler should parse lines correctly): \ 'end_lnum': 3, \ 'type': 'W', \ 'end_col': 12, - \ 'text': 'something: Something else' + \ 'text': 'Something else', + \ 'code': 'something', \ }, \ { \ 'lnum': 31, @@ -55,7 +57,8 @@ Execute(The tslint handler should parse lines correctly): \ 'end_lnum': 31, \ 'type': 'E', \ 'end_col': 20, - \ 'text': 'no-console: Calls to console.log are not allowed.' + \ 'text': 'Calls to console.log are not allowed.', + \ 'code': 'no-console', \ }, \ ] , \ ale_linters#typescript#tslint#Handle(bufnr(''), [json_encode([ @@ -155,7 +158,8 @@ Execute(The tslint handler report errors for empty files by default): \ 'end_lnum': 2, \ 'type': 'E', \ 'end_col': 1, - \ 'text': 'no-consecutive-blank-lines: Consecutive blank lines are forbidden', + \ 'text': 'Consecutive blank lines are forbidden', + \ 'code': 'no-consecutive-blank-lines', \ }, \ ], \ ale_linters#typescript#tslint#Handle(bufnr(''), [json_encode([{ @@ -228,7 +232,8 @@ Execute(The tslint handler should report errors when the ignore option is on, bu \ 'end_lnum': 2, \ 'type': 'E', \ 'end_col': 1, - \ 'text': 'no-consecutive-blank-lines: Consecutive blank lines are forbidden', + \ 'text': 'Consecutive blank lines are forbidden', + \ 'code': 'no-consecutive-blank-lines', \ }, \ ], \ ale_linters#typescript#tslint#Handle(bufnr(''), [json_encode([{