lambda-cicd-workshop

フェーズ3: 静的解析

このフェーズでは、ローカル環境で静的解析ツール(リンター)を使えるようにします。

uvとRuffをインストールする

まず、このフェーズで使う2つのツールを準備します。

uvは、Pythonのパッケージマネージャーです。Pythonのツールやライブラリを簡単にインストールできます。

curl -LsSf https://astral.sh/uv/install.sh | sh

Ruffは、Pythonコードを静的解析するツール(Linter)です。未定義の変数や不要なimportなどを検知します。uvを使ってインストールします。

uv tool install ruff

ローカルでコードをチェックする

まずは手元の環境でRuffを使ってみましょう。

フェーズ2で作成した src/index.py を対象に、Ruffを試してみます。

src/index.py にわざと不要なインポートを追加します。

import os

def handler(event, context):
    return {"statusCode": 200, "body": "hello, world!"}

Ruffを実行すると、検出できます。

ruff check src/index.py

F401 [*] `os` imported but unused
 --> src/index.py:1:8
  |
1 | import os
  |        ^^
2 |
3 | def handler(event, context):
  |
help: Remove unused import: `os`

Found 1 error.
[*] 1 fixable with the `--fix` option.

--fix オプションをつけると、修正もできます。

ruff check --fix
Found 1 error (1 fixed, 0 remaining).

ローカルで ruff check を実行すれば、pushする前に問題を発見できます。ただし、毎回手動で実行するのは忘れがちです。次のフェーズでは、これをGitHub Actionsで自動化します。

参考リンク

次のステップ

手元で静的解析ができるようになりました。次は、これをGitHub Actionsで自動化します。

フェーズ4: CI に進みましょう。