summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <w0rp@users.noreply.github.com>2019-02-20 09:58:02 +0000
committerGitHub <noreply@github.com>2019-02-20 09:58:02 +0000
commit8012e5b60fc08883754cb0c871a0e6cb012db7a7 (patch)
tree94aca835b94a9f8a7096186e2e8f2c650cc6fd32
parent707a42167f184355b64e1368a5e390dffc0cb885 (diff)
parent52c24007860b1e29c2e2cb318f29aff9889cb3c0 (diff)
downloadale-8012e5b60fc08883754cb0c871a0e6cb012db7a7.zip
Merge pull request #2303 from kevinoid/bandit-use-config
python/bandit: Use .bandit configuration file
-rw-r--r--ale_linters/python/bandit.vim9
-rw-r--r--doc/ale-python.txt11
-rw-r--r--test/command_callback/python_paths/with_bandit/.bandit0
-rw-r--r--test/command_callback/python_paths/with_bandit/namespace/foo/__init__.py0
-rw-r--r--test/command_callback/python_paths/with_bandit/namespace/foo/bar.py0
-rw-r--r--test/command_callback/test_bandit_command_callback.vader22
6 files changed, 42 insertions, 0 deletions
diff --git a/ale_linters/python/bandit.vim b/ale_linters/python/bandit.vim
index 819c83aa..5c9500a6 100644
--- a/ale_linters/python/bandit.vim
+++ b/ale_linters/python/bandit.vim
@@ -3,6 +3,7 @@
call ale#Set('python_bandit_executable', 'bandit')
call ale#Set('python_bandit_options', '')
+call ale#Set('python_bandit_use_config', 1)
call ale#Set('python_bandit_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_bandit_auto_pipenv', 0)
@@ -22,6 +23,14 @@ function! ale_linters#python#bandit#GetCommand(buffer) abort
let l:flags = ' --format custom'
\ . ' --msg-template "{line}:{test_id}:{severity}:{msg}" '
+ if ale#Var(a:buffer, 'python_bandit_use_config')
+ let l:config_path = ale#path#FindNearestFile(a:buffer, '.bandit')
+
+ if !empty(l:config_path)
+ let l:flags = ' --ini ' . ale#Escape(l:config_path) . l:flags
+ endif
+ endif
+
let l:exec_args = l:executable =~? 'pipenv$'
\ ? ' run bandit'
\ : ''
diff --git a/doc/ale-python.txt b/doc/ale-python.txt
index dd5d4cc6..dd946ad4 100644
--- a/doc/ale-python.txt
+++ b/doc/ale-python.txt
@@ -90,6 +90,17 @@ g:ale_python_bandit_options *g:ale_python_bandit_options*
bandit invocation.
+g:ale_python_bandit_use_config *g:ale_python_bandit_use_config*
+ *b:ale_python_bandit_use_config*
+ Type: |Number|
+ Default: `1`
+
+ If this variable is true and a `.bandit` file exists in the directory of the
+ file being checked or a parent directory, an `--ini` option is added to the
+ `bandit` command for the nearest `.bandit` file. Set this variable false to
+ disable adding the `--ini` option automatically.
+
+
g:ale_python_bandit_use_global *g:ale_python_bandit_use_global*
*b:ale_python_bandit_use_global*
Type: |Number|
diff --git a/test/command_callback/python_paths/with_bandit/.bandit b/test/command_callback/python_paths/with_bandit/.bandit
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/command_callback/python_paths/with_bandit/.bandit
diff --git a/test/command_callback/python_paths/with_bandit/namespace/foo/__init__.py b/test/command_callback/python_paths/with_bandit/namespace/foo/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/command_callback/python_paths/with_bandit/namespace/foo/__init__.py
diff --git a/test/command_callback/python_paths/with_bandit/namespace/foo/bar.py b/test/command_callback/python_paths/with_bandit/namespace/foo/bar.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/command_callback/python_paths/with_bandit/namespace/foo/bar.py
diff --git a/test/command_callback/test_bandit_command_callback.vader b/test/command_callback/test_bandit_command_callback.vader
index 5d1e6fd3..274ce901 100644
--- a/test/command_callback/test_bandit_command_callback.vader
+++ b/test/command_callback/test_bandit_command_callback.vader
@@ -47,3 +47,25 @@ Execute(Pipenv is detected when python_bandit_auto_pipenv is set):
\ . ' run bandit'
\ . b:bandit_flags
\ . ' -'
+
+Execute(The bandit command callback should add .bandit by default):
+ silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_bandit/namespace/foo/bar.py')
+
+ let b:config_path = ale#path#Simplify(
+ \ g:dir . '/python_paths/with_bandit/.bandit'
+ \)
+
+ AssertLinter 'bandit',
+ \ ale#Escape('bandit')
+ \ . ' --ini ' . ale#Escape(b:config_path)
+ \ . b:bandit_flags
+ \ . ' -'
+
+Execute(The bandit command callback should support not using .bandit):
+ silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_bandit/subdir/foo/bar.py')
+ let g:ale_python_bandit_use_config = 0
+
+ AssertLinter 'bandit',
+ \ ale#Escape('bandit')
+ \ . b:bandit_flags
+ \ . ' -'