Add oelint-adv support (#4043)

This commit is contained in:
offa 2022-02-06 05:08:10 +00:00 committed by GitHub
parent 0c276aac90
commit 7cbb68da6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 125 additions and 0 deletions

View File

@ -0,0 +1,47 @@
" Author: offa
" Description: oelint-adv for BitBake files
call ale#Set('bitbake_oelint_adv_executable', 'oelint-adv')
call ale#Set('bitbake_oelint_adv_options', '')
call ale#Set('bitbake_oelint_adv_config', '.oelint.cfg')
function! ale_linters#bitbake#oelint_adv#Command(buffer) abort
let l:config_file = ale#path#FindNearestFile(a:buffer,
\ ale#Var(a:buffer, 'bitbake_oelint_adv_config'))
return ((!empty(l:config_file))
\ ? 'OELINT_CONFIG=' . ale#Escape(l:config_file) . ' '
\ : '')
\ . '%e --quiet '
\ . ale#Pad(ale#Var(a:buffer, 'bitbake_oelint_adv_options')) . '%s'
endfunction
function! ale_linters#bitbake#oelint_adv#Handle(buffer, lines) abort
let l:pattern = '\v^(.+):(.+):(.+):(.+):(.+)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': str2nr(l:match[2]),
\ 'type': l:match[3] is# 'error'
\ ? 'E' : (l:match[3] is# 'warning' ? 'W' : 'I'),
\ 'text': StripAnsiCodes(l:match[5]),
\ 'code': l:match[4]
\ })
endfor
return l:output
endfunction
function! StripAnsiCodes(line) abort
return substitute(a:line, '\e\[[0-9;]\+[mK]', '', 'g')
endfunction
call ale#linter#Define('bitbake', {
\ 'name': 'oelint_adv',
\ 'output_stream': 'both',
\ 'executable': {b -> ale#Var(b, 'bitbake_oelint_adv_executable')},
\ 'cwd': '%s:h',
\ 'command': function('ale_linters#bitbake#oelint_adv#Command'),
\ 'callback': 'ale_linters#bitbake#oelint_adv#Handle',
\ })

31
doc/ale-bitbake.txt Normal file
View File

@ -0,0 +1,31 @@
===============================================================================
ALE BitBake Integration *ale-bitbake-options*
===============================================================================
oelint-adv *ale-bitbake-oelint_adv*
g:ale_bitbake_oelint_adv_executable *g:ale_bitbake_oelint_adv_executable*
Type: |String|
Default: `'oelint-adv'`
This variable can be changed to use a different executable for oelint-adv.
g:ale_bitbake_oelint_adv_options *g:ale_bitbake_oelint_adv_options*
Type: |String|
Default: `''`
This variable can be set to pass additional options to oelint-adv.
g:ale_bitbake_oelint_adv_config *g:ale_bitbake_oelint_adv_config*
Type: |String|
Default: `'.oelint.cfg'`
This variable can be set to use a different config file.
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@ -52,6 +52,8 @@ Notes:
* `buildifier`
* BibTeX
* `bibclean`
* BitBake
* `oelint-adv`
* Bourne Shell
* `shell` (-n flag)
* `shellcheck`

View File

@ -2728,6 +2728,8 @@ documented in additional help files.
buildifier............................|ale-bazel-buildifier|
bib.....................................|ale-bib-options|
bibclean..............................|ale-bib-bibclean|
bitbake.................................|ale-bitbake-options|
oelint-adv............................|ale-bitbake-oelint_adv|
c.......................................|ale-c-options|
astyle................................|ale-c-astyle|
cc....................................|ale-c-cc|

View File

@ -61,6 +61,8 @@ formatting.
* [buildifier](https://github.com/bazelbuild/buildtools)
* BibTeX
* [bibclean](http://ftp.math.utah.edu/pub/bibclean/)
* BitBake
* [oelint-adv](https://github.com/priv-kweihmann/oelint-adv)
* Bourne Shell
* shell [-n flag](http://linux.die.net/man/1/sh)
* [shellcheck](https://www.shellcheck.net/)

View File

@ -0,0 +1,28 @@
Before:
runtime ale_linters/bitbake/oelint_adv.vim
After:
Restore
call ale#linter#Reset()
Execute(The oelint_adv handler should handle warnings):
AssertEqual
\ [
\ {
\ 'lnum': 1234,
\ 'type': 'I',
\ 'code': 'oelint.var.suggestedvar.BUGTRACKER',
\ 'text': 'Variable ''BUGTRACKER'' should be set',
\ },
\ {
\ 'lnum': 17,
\ 'type': 'E',
\ 'code': 'oelint.var.mandatoryvar.DESCRIPTION',
\ 'text': 'Variable ''DESCRIPTION'' should be set',
\ },
\ ],
\ ale_linters#bitbake#oelint_adv#Handle(1, [
\ '/meta-x/recipes-y/example/example_1.0.bb:1234:info:oelint.var.suggestedvar.BUGTRACKER:Variable ''BUGTRACKER'' should be set',
\ 'example2_1.1.bb:17:error:oelint.var.mandatoryvar.DESCRIPTION:Variable ''DESCRIPTION'' should be set',
\ ])

13
test/linter/test_bitbake.vader Executable file
View File

@ -0,0 +1,13 @@
Before:
call ale#assert#SetUpLinterTest('bitbake', 'oelint_adv')
After:
call ale#assert#TearDownLinterTest()
Execute(The default command should be correct):
AssertLinter 'oelint-adv', ale#Escape('oelint-adv') . ' --quiet %s'
Execute(The executable should be configurable):
let b:ale_bitbake_oelint_adv_executable = 'xyz'
AssertLinter 'xyz', ale#Escape('xyz') . ' --quiet %s'