Mar*_*oma 7 python bandit-python
我正在使用 bandit 检查我的代码是否存在潜在的安全问题:
bandit -r git-repository/
Run Code Online (Sandbox Code Playgroud)
然而,bandit 发现的最常见的物品是B101。它由测试中的断言语句触发。我使用 pytest,所以这不是一个问题,而是一个很好的做法。我现在已经创建了一个.bandit文件
[bandit]
skips: B101
Run Code Online (Sandbox Code Playgroud)
但这也跳过了很多其他代码。这个问题有解决方案吗?
小智 18
根据这个评论,
当使用
--recursive整个路径时,会fnmatch针对 ed 进行编辑glob_list,因此--exclude_dir表达式test_*.py不匹配并排除子目录中的 (py) 测试文件,因为这*/test_*.py是需要的。
以下配置应该可以解决您的问题:
assert_used:
skips: ["*/test_*.py", "*/test_*.py"]
Run Code Online (Sandbox Code Playgroud)
小智 17
只是想添加到上面的答案并提及 toml 相当于跳过assert_used特定文件:
[tool.bandit.assert_used]
skips = ['*_test.py', '*/test_*.py']
Run Code Online (Sandbox Code Playgroud)
一个可能的解决方案是bandit完全跳过测试。假设您的代码位于src子文件夹中,请运行
bandit --configfile bandit.yaml --recursive src
Run Code Online (Sandbox Code Playgroud)
bandit.yaml在项目的根目录中包含以下内容
# Do not check paths including `/tests/`:
# they use `assert`, leading to B101 false positives.
exclude_dirs:
- '/tests/'
Run Code Online (Sandbox Code Playgroud)
更新:我更喜欢迭戈的解决方案。
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |