今日も見に来てくださって、ありがとうございます。石川さんです。
今回は、pylintの設定について書いてみました。急いでいる人のために、やり方は以下のとおりです。これでx、y、idはC0103の規約違反のメッセージが抑止されます。
・pylintrcファイルを作成(以下の2行を記載すれば、x、y、idではメッセージ抑制されます)
・プロジェクトフォルダ(pylint実行対象のファイルがあるフォルダ)に配置
[BASIC] good-names=x,y,id
動機
プログラムの保守性を高めることを考えると、コーディングルールに従ってコーディングするのは、とても良い習慣だと思います。と、いうことで、ぼくも最近はPythonの標準的なコーディングルールをチェックしてくれるツールのpylintでチェックしてからアップしているのですけど、ちょっと怪しいルールがありまして。
[C0103]14: Variable name "x" doesn't conform to snake_case naming style
そう、「x」は、スネークケースのネーミングスタイルではありません、と言われています。pylintは3文字以下の変数については、このメッセージを出してくれて、後で読んだときにわからなくなるような変数名を回避できるように教えてくれます。そうそう、変数名に、a、b、cと付けるとか、省略形は後でわからなくなっちゃうので、避けるべきですよね。でも、GUIプログラミングにおいて、x、yは、使ってもオッケーでしょ。x座標のxですよ。これ、3文字以上にするなら、x_coordinateとかにするのでしょうかねぇ。xで完全に意味がわかるし、x_coordinateだと逆に読みにくい気がするので、良い解決方法と思えません。と、いうことで、今回はこのpylintのメッセージを抑止したいと思います。
ちょっと調べると、pylintrcファイルに「good-names=」を記述すればよい、ということでこの設定をしたいと思います。ぼくが今使っているのはSpyderからの静的コード分析なので、こちらの設定がSpyderの中にあるかどうかを確認してみました。ツール(T)-設定(F)を開きます。
pylintは日本語環境だと「静的コード分析」というところに当たるようです。「静的コード分析」をクリックして内容を確認してみましょう。
どうやら、good-namesの設定も、pylintrcファイルに関する設定もできるところはなさそうですね。なので、pylintrcファイルをつくって、結果が出力されるフォルダへ配置してみましょう。
pylintrcファイルに以下のように記述しました。
good-names=x,y,id
pylint実行してみましたが、特に反応なしでした。と、いうことでSpyderにおけるpylintrcファイルの保存先調べてみましたら、プロジェクトフォルダへ配置せよ、ということでした。おっと、ここまで書いておいてSpyderからのpylint実行方法を書いていなかったことに気づきました。「ソース(C)」-「静的コード分析を実行」です。ショートカットキーは「F8」ですね。
他のpylint実行のやり方は、「静的コード分析」ペインを表示して、
そこの右上にある「分析」ボタンをクリックすると、実行結果が表示されます。こんな感じで出力されます。
さて、pylintrcファイルをプロジェクトフォルダに配置して、再度実行します。おっと、エラーがでました。
「File contains no section headers.」ということなので、ファイルの中にセクションヘッダーを書かないといけないのでしょうね。「OK」ボタンを押してみますと、Issueレポーターなどというものが起動されました。おお~、Spyderの内部エラーを回収する仕組みがあるのですねぇ。
でも、今回は、おそらくpylintrcファイルの書き方の問題だと思いますので、送信は不要ですね。とりあえず「閉じる」を押して、この画面を閉じましょう。
Pylintrc exampleで検索してみたところ、すぐに見つかりました。はい、セクションヘッダーとして、[BASIC]を入れればよさそうです。入れて、保存して、実行してみたところ、無事、x、y、idのメッセージが出力されなくなりました。
まとめ
pylintをつかって、警告をひとつずつ潰していくと、色々と勉強になります。みなさんもなるべく使うようにしましょう。そして、昔やっていたC言語のコンパイルエラーとか警告を潰していく作業を思い出してなんだかなつかしいです。