Add a linter for Apache Thrift IDL files

This linter works by invoking the `thrift` compiler with the buffer
contents and reporting any parser and code generation issues.

The handler rolls its own output-matching loop because we have the
(unfortunate) requirement of handling error output that spans multiple
lines.

Unit tests cover both the command callback and handler, and there is
initial documentation for all of the option variables.
This commit is contained in:
Jon Parise
2017-08-30 10:59:40 -07:00
parent c7536fb4fd
commit f4c5d29c64
6 changed files with 265 additions and 0 deletions

46
doc/ale-thrift.txt Normal file
View File

@@ -0,0 +1,46 @@
===============================================================================
ALE Thrift Integration *ale-thrift-options*
===============================================================================
thrift *ale-thrift-thrift*
The `thrift` linter works by compiling the buffer's contents and reporting any
errors reported by the parser and the configured code generator(s).
g:ale_thrift_thrift_executable *g:ale_thrift_thrift_executable*
*b:ale_thrift_thrift_executable*
Type: |String|
Default: `'thrift'`
See |ale-integrations-local-executables|
g:ale_thrift_thrift_generators *g:ale_thrift_thrift_generators*
*b:ale_thrift_thrift_generators*
Type: |List| of |String|s
Default: `['cpp']`
This list must contain one or more named code generators. Generator options
can be included as part of each string, e.g. `['py:dynamic']`.
g:ale_thrift_thrift_includes *g:ale_thrift_thrift_includes*
*b:ale_thrift_thrift_includes*
Type: |List| of |String|s
Default: `[]`
This list contains paths that will be searched for thrift `include`
directives.
g:ale_thrift_thrift_options *g:ale_thrift_thrift_options*
*b:ale_thrift_thrift_options*
Type: |String|
Default: `'-strict'`
This variable can be changed to customize the additional command-line
arguments that are passed to the thrift compiler.
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -127,6 +127,8 @@ CONTENTS *ale-contents*
tex...................................|ale-tex-options|
chktex..............................|ale-tex-chktex|
lacheck.............................|ale-tex-lacheck|
thrift................................|ale-thrift-options|
thrift..............................|ale-thrift-thrift|
typescript............................|ale-typescript-options|
eslint..............................|ale-typescript-eslint|
tslint..............................|ale-typescript-tslint|
@@ -248,6 +250,7 @@ Notes:
* Tcl: `nagelfar`!!
* Texinfo: `proselint`
* Text^: `proselint`, `vale`
* Thrift: `thrift`
* TypeScript: `eslint`, `tslint`, `tsserver`, `typecheck`
* Verilog: `iverilog`, `verilator`
* Vim: `vint`