Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5718

Asynchronous Lint Engineで静的解析を自動化 python編

$
0
0

この記事ではAsynchronous Lint Engine, 通称ALEの導入例を紹介します.

例として, pythonの静的解析ツールautopep8を導入しますが, 他の言語やツールでも同じようにできると思います.

環境とバージョン

OS: Ubuntu 16.04(WSL)
VIM - Vi IMproved 8.1
Python 3.6.5:: Anaconda, Inc.

ALEとは

ALEとは静的解析を非同期で実行してくれるものです.

そもそも静的解析とは, コードを静的に(実際にコードを実行せず, コード自体の表面上の)解析します.

変数の宣言がおかしいとか, 変数のスペルミス, ライブラリ読み込んだけど使ってないよとか, インデントがずれてるよといった実際にコードを動かさなくても分かる範囲のバグを自動で検出してくれます.

pythonの静的解析ツールはflake8mypyなど様々です.

実際, 静的解析ツールを使うには, シェル上で, コマンドを叩く必要があります.

しかし, ALEは, vim上で非同期で静的解析ツールを自動で実行してくれるすぐれものです.

つまり, いちいちシェルに戻ったり:!を使うことなく, コードを書きながらチェックができるようになります.

静的解析ツールの導入

flake8

入れたいバージョンのpythonで,

pip install --upgrade pip
python -m pip install flake8

autopep8

pip install autopep8

ALEを導入

deinでインストールします.

~/.vimrcに,

call dein#add('w0rp/ale')

を追加してvimを再起動.

使うLinterを設定

使うLinterを設定します.

言語ごとに違うので, おすすめは~/.vim/ftplugin/<プログラミング言語>.vimに設定を書くと良い.

今回は, pythonなので, ~/.vim/ftplugin/python.vimに設定を書くと,

pythonファイルを読み込んだときにその設定が読み込まれます.

さて, 使うLinterの名前をb:ale_fixersg:ale_fixers(グローバルかbufferごとか)にリストで代入します.

~/.vim/ftplugin/python.vim
letb:ale_fixers=['autopep8']

どうしても.vimrcに書きたいという方は, ハッシュ形式で言語を指定できます.

~/.vimrc
letb:ale_fixers={'python':['autopep8']}

また保存時にファイルを自動で修正することも可能です.

この場合, g:ale_fix_on_save1にする.

~/.vim/ftplugin/python.vim
letg:ale_fix_on_save=1

他にも自動補完や定義ジャンプなど便利な機能があるので, README.mdを見るとよい.


Viewing all articles
Browse latest Browse all 5718

Trending Articles