我正在使用 bandit 检查我的代码是否存在潜在的安全问题:
bandit -r git-repository/
但是,bandit 发现的最常见的项目是B101。它由测试中的断言语句触发。我使用 pytest,所以这不是一个问题,而是一个好习惯。我现在创建了一个.bandit
文件
[bandit]
skips: B101
但这也跳过了许多其他代码。这个问题有解决方案吗?
我正在使用 bandit 检查我的代码是否存在潜在的安全问题:
bandit -r git-repository/
但是,bandit 发现的最常见的项目是B101。它由测试中的断言语句触发。我使用 pytest,所以这不是一个问题,而是一个好习惯。我现在创建了一个.bandit
文件
[bandit]
skips: B101
但这也跳过了许多其他代码。这个问题有解决方案吗?
基于此评论,
当使用
--recursive
整个路径时fnmatch
,对glob_list
,因此--exclude_dir
表达式test_*.py
不匹配并排除子目录中的 (py)test 文件,因为这*/test_*.py
是必需的。
以下配置应该可以解决您的问题:
assert_used:
skips: ["*/test_*.py", "*/test_*.py"]
根据文档,您的配置应该看起来像
skips: ['B101']
,而不是skips: B101
(您拥有的)。
编辑:
好的,所以如果我理解正确,你想跳过B101
你的tests
文件夹。我不知道有什么方法可以指定这一点,但我可以想到一种 hack - 只需运行 bandit 两次 - 一次 ignoring tests
,一次仅在测试 skipping 上B101
。我知道,这不是最优雅的方式,但它应该可以解决您的问题。
您可以配置跳过此检查的文件。当您在测试用例中使用断言语句时,这通常很有用。
bandit --configfile bandit.yaml
在项目的根目录中使用以下 bandit.yaml
assert_used:
skips: ['*_test.py', 'test_*.py']
链接到原始文档