Ryota Kondo

Ryota Kondo

2023/01/25

AWS|Cloud9のエディタ上でPythonの静的解析を行う方法とそのおすすめ設定

AWSのCloud9ではソースコードの編集や、デバック実行だけでなく、エディタ上でPylintを使ったPythonの静的解析も行うことができます。

今回はその静的解析を行う方法と、どのような静的解析を適用するかのおすすめ設定について説明します。

対象とするバージョン

現時点(2023/01)でCloud9で採用されている下のバージョンを対象としています。

  • Python 3.7.15
  • Pylint 2.4.4

Pylintの最新バージョンはv2.16.0b0ですので、かなり古いバージョンが採用されていることがわかります。

エディタ上で静的解析を行う方法

まずはメニューバーのCloud9のアイコンから、Preferencesを開きます。

cloud9 preferences

次にPython Supportを選択し、Pylint command-line optionsにPylintでチェックさせたい内容を入力します。

初期状態ではイメージのように-d all -e E -e Fが入力されているように見えますが、実際はプレースホルダーですので設定なしとなっています。設定値を入力することにより、Pylintでの静的解析が有効となります。

Preferences

以上で設定は完了です。設定値についてはRunning Pylint — Pylint 2.4.4 documentationのCommand line optionsを参照してください。

Pylint command-line optionsのおすすめ設定

ここまででCloud9上で静的解析を有効にする説明をしてきましたが、実際に何の設定値を入れればよいのかは公式のドキュメントを読み込む必要があります。こちらの最新バージョンのドキュメントの方がまだ読みやすいですが、それでもすんなりとは理解できませんでした。

ですので、すぐに導入したい方向けに、できるだけPEP 8に則して幅広くチェックをするようにしたおすすめの設定値について説明します。

Pylint command-line optionsに設定するおすすめの値は下の通りです。

-d all -e E,F,C,R -d C0330 --variable-rgx='^[a-z0-9_]+$' --argument-rgx='^[a-z0-9_]+$' --module-naming-style=any

設定内容は左から有効となり、右に行くほど優先度は高くなります。個別の内容について順番に説明します。

  • -d all
    • 全てのチェックメッセージを無効にします。順次設定を有効化していくため、最初に無効化を行います。
  • -e E,F,C,R
    • Error、Fatal、Convention、Refactorのメッセージを有効化します。
  • -d C0330
    • メッセージコードC0330を無効化します。C0330は後続のバージョンのPylintで削除された警告ですが、Cloud9で参照しているPylintのバージョン(2.4.4)が上げられなかったためこちらで無効化しています。
  • --variable-rgx='^[a-z0-9_]+$' --argument-rgx='^[a-z0-9_]+$'
    • Pylint標準のsnake caseチェックではidfのような1, 2文字の変数、引数も対象としてしまいます。そのため--variable-rgx --argument-rgxに1, 2文字も許可するsnake caseを表す正規表現を設定しています。
  • --module-naming-style=any
    • 任意のモジュール名を許可しています。本来不要の設定ですが、Cloud9で下の画像のように正しくモジュール名が判定されないため追加しました。モジュール名についてはsnake caseであることを別途確認してください。

test

【2023/3/29追記】公式ドキュメントの少しわかりづらいところに、メッセージコードの一覧があります。リンクを補足として追記しました。

おわりに

Cloud9のエディタ上で静的解析を行う方法とそのおすすめ設定について説明をしました。開発環境を整える際の参考となれば幸いです。

関連タグの記事

Ryota Kondo
Ryota Kondo

システムエンジニア・プログラマー|このブログサイトの運営もしており、思いついたことをまとめて記事を書いています💡