Bunditって何?
Bunditというライブラリを知る機会がありました。改めて調べましたで整理しておきます。
A security linter from PyCQA と記載されています。つまりセキュリティ用のLinterです。
https://github.com/pycqa/bandit
元々、OpenStack Security Project内で開発されて、後にPyCQAに移管された、と記載されています。また、ASTを構築して、ノードレベルで危険な候補を重み付きで出す仕組みのようです。
Banditを使う
とりあえず、インストールしてBanditを使ってみましょう。pipでインストールできます。
pip install bandit
その後、以下のコマンドで実行できます。
bandit -r path/to/your/code
とりあえず、動かすだけならすぐに動きました。
個人用ツールにかけてみる
現在、ClaudeCode で Django + htmxを使って、自分用のツールを作ってみています。この開発では、画面を操作して動作確認するだけで、現時点ではコードはほぼ見ていません。ローカルで動作させているだけの状態ですが、そのプロジェクトにBanditにかけてみました。
以下がその結果です。96万行のコードに対して、3000件以上のIssueが検出されました。なかなかですね。検出結果を精査するところまで行ってませんが、今後、コレを元にコーディングエージェントに自動修正をさせてみたいですね。
Code scanned:
Total lines of code: 960979
Total lines skipped (#nosec): 2
Run metrics:
Total issues (by severity):
Undefined: 0
Low: 3056
Medium: 213
High: 29
Total issues (by confidence):
Undefined: 0
Low: 14
Medium: 83
High: 3201
Files skipped (0):
ちなみに:PyCQA って何?
PyCQAは、Python Code Quality Authorityの略です。
調べたところによると、Pythonのコード品質に関するツールをメンテナンスしてる有志のグループであり、以下のようなツールが代表的なようです。
- flake8
- pycodestyle
- isort
- bandit
- mccabe